diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..906998e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,37 @@ +name: Build + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + + - name: Setup JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'microsoft' + + - name: Setup Gradle 8.10 + uses: gradle/actions/setup-gradle@v4 + with: + gradle-version: "8.10" + + - name: Run build + run: gradle build + + - name: Copy Jars + run: gradle copyJars + + - name: Upload files + uses: actions/upload-artifact@v4 + with: + name: build and source jars + path: build/libs/*.jar + retention-days: 7 \ No newline at end of file diff --git a/common/build.gradle b/common/build.gradle index d29f0d3..55059e0 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -9,7 +9,7 @@ dependencies { // Remove the next line if you don't want to depend on the API modApi "dev.architectury:architectury:${rootProject.architectury_version}" // Neptune cross-platform library - modImplementation "maven.modrinth:neptune:zMTlhkbC" + modImplementation "maven.modrinth:neptune:EtKuwNMX" modImplementation "maven.modrinth:jupiter:elRfRGl9" diff --git a/common/src/main/java/com/iafenvoy/sow/SongsOfWarClient.java b/common/src/main/java/com/iafenvoy/sow/SongsOfWarClient.java index 5fa89dc..e7a3a27 100644 --- a/common/src/main/java/com/iafenvoy/sow/SongsOfWarClient.java +++ b/common/src/main/java/com/iafenvoy/sow/SongsOfWarClient.java @@ -2,11 +2,15 @@ import com.iafenvoy.sow.data.BeaconData; import com.iafenvoy.sow.registry.SowRenderers; +import com.iafenvoy.sow.render.util.ArdoniMarkerReloader; import com.iafenvoy.sow.screen.BeaconTeleportScreen; import dev.architectury.networking.NetworkManager; +import dev.architectury.registry.ReloadListenerRegistry; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; +import net.minecraft.resource.ResourceType; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @Environment(EnvType.CLIENT) @@ -17,6 +21,7 @@ public static void init() { public static void process() { SowRenderers.registerSkull(); + ReloadListenerRegistry.register(ResourceType.CLIENT_RESOURCES, new ArdoniMarkerReloader(), new Identifier(SongsOfWar.MOD_ID, "ardoni_marker")); NetworkManager.registerReceiver(NetworkManager.Side.S2C, Static.BEACON_TELEPORT, (buf, context) -> { BlockPos pos = buf.readBlockPos(); BeaconData data = BeaconData.readNbt(buf.readNbt()); diff --git a/common/src/main/java/com/iafenvoy/sow/entity/EnderKnightEntity.java b/common/src/main/java/com/iafenvoy/sow/entity/EnderKnightEntity.java deleted file mode 100644 index 6ed26b1..0000000 --- a/common/src/main/java/com/iafenvoy/sow/entity/EnderKnightEntity.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.iafenvoy.sow.entity; - -import com.iafenvoy.neptune.object.entity.MonsterEntityBase; -import com.iafenvoy.neptune.render.EntityTextureProvider; -import com.iafenvoy.neptune.util.RandomHelper; -import com.iafenvoy.sow.SongsOfWar; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.goal.*; -import net.minecraft.entity.attribute.DefaultAttributeContainer; -import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; -import net.minecraft.entity.mob.HostileEntity; -import net.minecraft.entity.mob.MobEntity; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.util.Identifier; -import net.minecraft.world.LocalDifficulty; -import net.minecraft.world.ServerWorldAccess; -import net.minecraft.world.World; -import org.jetbrains.annotations.Nullable; - -public class EnderKnightEntity extends MonsterEntityBase implements EntityTextureProvider { - private static final TrackedData KNIGHT_TYPE = DataTracker.registerData(EnderKnightEntity.class, TrackedDataHandlerRegistry.INTEGER); - - public EnderKnightEntity(EntityType entityType, World world) { - super(entityType, world, EntityGroup.DEFAULT); - } - - public static DefaultAttributeContainer.Builder createAttributes() { - return MobEntity.createMobAttributes() - .add(EntityAttributes.GENERIC_MAX_HEALTH, 20.0) - .add(EntityAttributes.GENERIC_ARMOR, 10.0) - .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 4.0) - .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 64.0) - .add(EntityAttributes.GENERIC_ATTACK_KNOCKBACK, 1.0); - } - - @Override - protected void initGoals() { - super.initGoals(); - this.getNavigation().getNodeMaker().setCanOpenDoors(true); - this.goalSelector.add(1, new MeleeAttackGoal(this, 1, false) { - protected double getSquaredMaxAttackDistance(LivingEntity entity) { - return this.mob.getWidth() * this.mob.getWidth() + entity.getWidth(); - } - }); - this.goalSelector.add(2, new WanderAroundGoal(this, 0.5)); - this.targetSelector.add(3, new RevengeGoal(this)); - this.goalSelector.add(4, new LongDoorInteractGoal(this, false)); - this.goalSelector.add(5, new LongDoorInteractGoal(this, true)); - this.goalSelector.add(6, new BreakDoorGoal(this, e -> true)); - this.goalSelector.add(7, new LookAroundGoal(this)); - this.goalSelector.add(8, new SwimGoal(this)); - } - - @Override - protected void initDataTracker() { - super.initDataTracker(); - this.dataTracker.startTracking(KNIGHT_TYPE, 1); - } - - public int getKnightType() { - return this.dataTracker.get(KNIGHT_TYPE); - } - - public void setKnightType(int type) { - this.dataTracker.set(KNIGHT_TYPE, type); - } - - @Override - public void writeCustomDataToNbt(NbtCompound nbt) { - super.writeCustomDataToNbt(nbt); - nbt.putInt("knightType", this.getKnightType()); - } - - @Override - public void readCustomDataFromNbt(NbtCompound nbt) { - super.readCustomDataFromNbt(nbt); - if (nbt.contains("knightType")) this.setKnightType(nbt.getInt("knightType")); - else this.setKnightType(RandomHelper.nextInt(1, 5)); - } - - @Nullable - @Override - public EntityData initialize(ServerWorldAccess world, LocalDifficulty difficulty, SpawnReason spawnReason, @Nullable EntityData entityData, @Nullable NbtCompound entityNbt) { - EntityData data = super.initialize(world, difficulty, spawnReason, entityData, entityNbt); - this.setKnightType(RandomHelper.nextInt(1, 5)); - return data; - } - - @Override - public Identifier getTextureId() { - return new Identifier(SongsOfWar.MOD_ID, "textures/entity/ender_knight/ender_knight_" + this.getKnightType() + ".png"); - } - - @Override - public boolean canImmediatelyDespawn(double distanceSquared) { - return false; - } -} diff --git a/common/src/main/java/com/iafenvoy/sow/item/EnderKnightArmorItem.java b/common/src/main/java/com/iafenvoy/sow/item/EnderKnightArmorItem.java new file mode 100644 index 0000000..b143b75 --- /dev/null +++ b/common/src/main/java/com/iafenvoy/sow/item/EnderKnightArmorItem.java @@ -0,0 +1,22 @@ +package com.iafenvoy.sow.item; + +import com.iafenvoy.neptune.render.armor.IArmorTextureProvider; +import com.iafenvoy.sow.SongsOfWar; +import com.iafenvoy.sow.registry.SowItemGroups; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterials; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; + +public class EnderKnightArmorItem extends ArmorItem implements IArmorTextureProvider { + public EnderKnightArmorItem(Type type) { + super(ArmorMaterials.NETHERITE, type, new Settings().fireproof().arch$tab(SowItemGroups.ITEMS)); + } + + @Override + public Identifier getArmorTexture(ItemStack itemStack, Entity entity, EquipmentSlot equipmentSlot, String s) { + return new Identifier(SongsOfWar.MOD_ID, "textures/models/armor/ender_knight_layer_" + (equipmentSlot == EquipmentSlot.LEGS ? 2 : 1) + ".png"); + } +} diff --git a/common/src/main/java/com/iafenvoy/sow/registry/SowEntities.java b/common/src/main/java/com/iafenvoy/sow/registry/SowEntities.java index e047f19..e920805 100644 --- a/common/src/main/java/com/iafenvoy/sow/registry/SowEntities.java +++ b/common/src/main/java/com/iafenvoy/sow/registry/SowEntities.java @@ -2,7 +2,6 @@ import com.iafenvoy.neptune.util.EntityBuildHelper; import com.iafenvoy.sow.SongsOfWar; -import com.iafenvoy.sow.entity.EnderKnightEntity; import com.iafenvoy.sow.entity.GrimEntity; import com.iafenvoy.sow.entity.ardoni.*; import com.iafenvoy.sow.entity.ardoni.random.*; @@ -41,7 +40,6 @@ public final class SowEntities { public static final RegistrySupplier> NESTORIS_ARDONI = build("nestoris_ardoni", NestorisArdoniEntity::new, SpawnGroup.CREATURE, 64, 3, false, EntityBuildHelper.PLAYER.scale(1.1f)); public static final RegistrySupplier> SENDARIS_ARDONI = build("sendaris_ardoni", SendarisArdoniEntity::new, SpawnGroup.CREATURE, 64, 3, false, EntityBuildHelper.PLAYER.scale(1.1f)); public static final RegistrySupplier> VOLTARIS_ARDONI = build("voltaris_ardoni", VoltarisArdoniEntity::new, SpawnGroup.CREATURE, 64, 3, false, EntityBuildHelper.PLAYER.scale(1.1f)); - public static final RegistrySupplier> ENDER_KNIGHT = build("ender_knight", EnderKnightEntity::new, SpawnGroup.CREATURE, 64, 3, false, EntityBuildHelper.PLAYER); public static final RegistrySupplier> GRIM = build("grim", GrimEntity::new, SpawnGroup.CREATURE, 64, 3, false, EntityBuildHelper.PLAYER); //Ardoni public static final RegistrySupplier> TIDE_SINGER = build("tide_singer", TideSingerEntity::new, SpawnGroup.CREATURE, 64, 3, false, EntityBuildHelper.PLAYER.scale(1.1f)); @@ -151,7 +149,6 @@ public static void init() { EntityAttributeRegistry.register(NESTORIS_ARDONI, NestorisArdoniEntity::createAttributes); EntityAttributeRegistry.register(SENDARIS_ARDONI, SendarisArdoniEntity::createAttributes); EntityAttributeRegistry.register(VOLTARIS_ARDONI, VoltarisArdoniEntity::createAttributes); - EntityAttributeRegistry.register(ENDER_KNIGHT, EnderKnightEntity::createAttributes); EntityAttributeRegistry.register(GRIM, GrimEntity::createAttributes); EntityAttributeRegistry.register(TIDE_SINGER, TideSingerEntity::createAttributes); diff --git a/common/src/main/java/com/iafenvoy/sow/registry/SowItems.java b/common/src/main/java/com/iafenvoy/sow/registry/SowItems.java index eb0fbd1..4a39f3a 100644 --- a/common/src/main/java/com/iafenvoy/sow/registry/SowItems.java +++ b/common/src/main/java/com/iafenvoy/sow/registry/SowItems.java @@ -5,10 +5,12 @@ import com.iafenvoy.sow.data.ArdoniType; import com.iafenvoy.sow.data.EnchantmentFragmentInfo; import com.iafenvoy.sow.item.EnchantmentFragmentItem; +import com.iafenvoy.sow.item.EnderKnightArmorItem; import com.iafenvoy.sow.item.SowSpawnEggItem; import dev.architectury.registry.CreativeTabRegistry; import dev.architectury.registry.registries.DeferredRegister; import dev.architectury.registry.registries.RegistrySupplier; +import net.minecraft.item.ArmorItem; import net.minecraft.item.Item; import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Rarity; @@ -28,6 +30,11 @@ public final class SowItems { public static final RegistrySupplier ENCHANTMENT_FRAGMENT_AQUA = REGISTRY.register("enchantment_fragment_aqua", () -> new EnchantmentFragmentItem(EnchantmentFragmentInfo.of(GlintManager.AQUA, 1).kb(1).luck(2))); public static final RegistrySupplier WITHER_STAFF = REGISTRY.register("wither_staff", () -> new Item(new Item.Settings().fireproof().rarity(Rarity.UNCOMMON).arch$tab(SowItemGroups.ITEMS))); + + public static final RegistrySupplier ENDER_KNIGHT_HELMET = REGISTRY.register("ender_knight_helmet", () -> new EnderKnightArmorItem(ArmorItem.Type.HELMET)); + public static final RegistrySupplier ENDER_KNIGHT_CHESTPLATE = REGISTRY.register("ender_knight_chestplate", () -> new EnderKnightArmorItem(ArmorItem.Type.CHESTPLATE)); + public static final RegistrySupplier ENDER_KNIGHT_LEGGINGS = REGISTRY.register("ender_knight_leggings", () -> new EnderKnightArmorItem(ArmorItem.Type.LEGGINGS)); + public static final RegistrySupplier ENDER_KNIGHT_BOOTS = REGISTRY.register("ender_knight_boots", () -> new EnderKnightArmorItem(ArmorItem.Type.BOOTS)); //Spawn Egg //Misc public static final RegistrySupplier NONE_TYPE_ARDONI_SPAWN_EGG = REGISTRY.register("none_type_ardoni_spawn_egg", () -> ArdoniType.NONE.createSpawnEgg(SowEntities.NONE_TYPE_ARDONI)); @@ -36,7 +43,6 @@ public final class SowItems { public static final RegistrySupplier NESTORIS_ARDONI_SPAWN_EGG = REGISTRY.register("nestoris_ardoni_spawn_egg", () -> ArdoniType.NESTORIS.createSpawnEgg(SowEntities.NESTORIS_ARDONI)); public static final RegistrySupplier KALTARIS_ARDONI_SPAWN_EGG = REGISTRY.register("kaltaris_ardoni_spawn_egg", () -> ArdoniType.KALTARIS.createSpawnEgg(SowEntities.KALTARIS_ARDONI)); public static final RegistrySupplier MENDORIS_ARDONI_SPAWN_EGG = REGISTRY.register("mendoris_ardoni_spawn_egg", () -> ArdoniType.MENDORIS.createSpawnEgg(SowEntities.MENDORIS_ARDONI)); - public static final RegistrySupplier ENDER_KNIGHT_SPAWN_EGG = REGISTRY.register("ender_knight_spawn_egg", SowSpawnEggItem.create(SowEntities.ENDER_KNIGHT, 0xFF000000, 0xFF800080)); public static final RegistrySupplier GRIM_SPAWN_EGG = REGISTRY.register("grim_spawn_egg", SowSpawnEggItem.create(SowEntities.GRIM, 0xFF444444, 0xFF00FFFF)); //Ardoni public static final RegistrySupplier TIDE_SINGER_SPAWN_EGG = REGISTRY.register("tide_singer_spawn_egg", SowSpawnEggItem.create(SowEntities.TIDE_SINGER, 0xFF888888, 0xFFFFFF00)); diff --git a/common/src/main/java/com/iafenvoy/sow/registry/SowRenderers.java b/common/src/main/java/com/iafenvoy/sow/registry/SowRenderers.java index 8480327..3130aa8 100644 --- a/common/src/main/java/com/iafenvoy/sow/registry/SowRenderers.java +++ b/common/src/main/java/com/iafenvoy/sow/registry/SowRenderers.java @@ -5,7 +5,6 @@ import com.iafenvoy.neptune.render.SkullRenderRegistry; import com.iafenvoy.sow.entity.GrimEntity; import com.iafenvoy.sow.entity.ardoni.*; -import com.iafenvoy.sow.entity.author.PixelZnimationEntity; import com.iafenvoy.sow.entity.felina.*; import com.iafenvoy.sow.entity.human.*; import com.iafenvoy.sow.entity.magnorite.IgneousEntity; @@ -27,7 +26,6 @@ public static void registerEntityRenderers() { EntityRendererRegistry.register(SowEntities.MENDORIS_ARDONI, ArdoniEntityRenderer::new); EntityRendererRegistry.register(SowEntities.NESTORIS_ARDONI, ArdoniEntityRenderer::new); EntityRendererRegistry.register(SowEntities.KALTARIS_ARDONI, ArdoniEntityRenderer::new); - EntityRendererRegistry.register(SowEntities.ENDER_KNIGHT, CommonPlayerLikeEntityRenderer::new); EntityRendererRegistry.register(SowEntities.GRIM, CommonPlayerLikeEntityRenderer::new); EntityRendererRegistry.register(SowEntities.TIDE_SINGER, ArdoniEntityRenderer::new); diff --git a/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerGenerator.java b/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerGenerator.java index a4d498b..af9a138 100644 --- a/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerGenerator.java +++ b/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerGenerator.java @@ -33,6 +33,10 @@ public static ArdoniMarkerGenerator getOrCreate(long seed) { return GENERATOR.get(seed); } + public static void resetAll() { + GENERATOR.values().forEach(ArdoniMarkerGenerator::reset); + } + private static int generateColor(Random random) { int r = random.nextInt(0xC0, 0x100); return 0xFF << 24 | r << 16 | r << 8 | r; diff --git a/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerReloader.java b/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerReloader.java new file mode 100644 index 0000000..0fe12bf --- /dev/null +++ b/common/src/main/java/com/iafenvoy/sow/render/util/ArdoniMarkerReloader.java @@ -0,0 +1,11 @@ +package com.iafenvoy.sow.render.util; + +import net.minecraft.resource.ResourceManager; +import net.minecraft.resource.SynchronousResourceReloader; + +public class ArdoniMarkerReloader implements SynchronousResourceReloader { + @Override + public void reload(ResourceManager manager) { + ArdoniMarkerGenerator.resetAll(); + } +} diff --git a/common/src/main/resources/assets/sow/lang/en_us.json b/common/src/main/resources/assets/sow/lang/en_us.json index 50f604a..caf7f5f 100644 --- a/common/src/main/resources/assets/sow/lang/en_us.json +++ b/common/src/main/resources/assets/sow/lang/en_us.json @@ -81,7 +81,6 @@ "entity.sow.death_singer": "Ingresssus", "entity.sow.denny": "Denny", "entity.sow.eddy": "Eddy", - "entity.sow.ender_knight": "Ender Knight", "entity.sow.etherea_guard": "Etherea Guard", "entity.sow.etherea_soldier": "Etherea Soldier", "entity.sow.farmer_folk": "Farmer Folk", @@ -213,7 +212,10 @@ "item.sow.enchantment_fragment.white": "White", "item.sow.enchantment_fragment.yellow": "Yellow", "item.sow.ender_blade": "Ender Blade", - "item.sow.ender_knight_spawn_egg": "Ender Knight Spawn Egg", + "item.sow.ender_knight_boots": "Ender Knight Boots", + "item.sow.ender_knight_chestplate": "Ender Knight Chestplate", + "item.sow.ender_knight_helmet": "Ender Knight Helmet", + "item.sow.ender_knight_leggings": "Ender Knight Leggings", "item.sow.ender_sword": "Ender Sword", "item.sow.etherea_guard_spawn_egg": "Etherea Guard Spawn Egg", "item.sow.etherea_soldier_spawn_egg": "Etherea Soldier Spawn Egg", diff --git a/common/src/main/resources/assets/sow/lang/zh_cn.json b/common/src/main/resources/assets/sow/lang/zh_cn.json index 2f570c3..06fbdfc 100644 --- a/common/src/main/resources/assets/sow/lang/zh_cn.json +++ b/common/src/main/resources/assets/sow/lang/zh_cn.json @@ -81,7 +81,6 @@ "entity.sow.death_singer": "英格拉西斯", "entity.sow.denny": "丹尼", "entity.sow.eddy": "艾迪", - "entity.sow.ender_knight": "末影骑士", "entity.sow.etherea_guard": "埃希里亚守卫", "entity.sow.etherea_soldier": "埃希里亚士兵", "entity.sow.farmer_folk": "农民", @@ -213,7 +212,10 @@ "item.sow.enchantment_fragment.white": "白色", "item.sow.enchantment_fragment.yellow": "黄色", "item.sow.ender_blade": "末影之刃", - "item.sow.ender_knight_spawn_egg": "末影骑士刷怪蛋", + "item.sow.ender_knight_boots": "末影骑士靴", + "item.sow.ender_knight_chestplate": "末影骑士胸甲", + "item.sow.ender_knight_helmet": "魔影骑士头盔", + "item.sow.ender_knight_leggings": "末影骑士护腿", "item.sow.ender_sword": "末影之剑", "item.sow.etherea_guard_spawn_egg": "埃希里亚守卫刷怪蛋", "item.sow.etherea_soldier_spawn_egg": "埃希里亚士兵刷怪蛋", diff --git a/common/src/main/resources/assets/sow/models/item/ender_knight_boots.json b/common/src/main/resources/assets/sow/models/item/ender_knight_boots.json new file mode 100644 index 0000000..3a51b45 --- /dev/null +++ b/common/src/main/resources/assets/sow/models/item/ender_knight_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sow:item/armor/ender_knight_boots" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/sow/models/item/ender_knight_chestplate.json b/common/src/main/resources/assets/sow/models/item/ender_knight_chestplate.json new file mode 100644 index 0000000..c5e5411 --- /dev/null +++ b/common/src/main/resources/assets/sow/models/item/ender_knight_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sow:item/armor/ender_knight_chestplate" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/sow/models/item/ender_knight_helmet.json b/common/src/main/resources/assets/sow/models/item/ender_knight_helmet.json new file mode 100644 index 0000000..f6e6a47 --- /dev/null +++ b/common/src/main/resources/assets/sow/models/item/ender_knight_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sow:item/armor/ender_knight_helmet" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/sow/models/item/ender_knight_leggings.json b/common/src/main/resources/assets/sow/models/item/ender_knight_leggings.json new file mode 100644 index 0000000..6d22bf4 --- /dev/null +++ b/common/src/main/resources/assets/sow/models/item/ender_knight_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sow:item/armor/ender_knight_leggings" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/sow/models/item/ender_knight_spawn_egg.json b/common/src/main/resources/assets/sow/models/item/ender_knight_spawn_egg.json deleted file mode 100644 index d1aaa9d..0000000 --- a/common/src/main/resources/assets/sow/models/item/ender_knight_spawn_egg.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:item/template_spawn_egg" -} \ No newline at end of file diff --git a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_1.png b/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_1.png deleted file mode 100644 index 57e50fc..0000000 Binary files a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_1.png and /dev/null differ diff --git a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_2.png b/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_2.png deleted file mode 100644 index 5398c0d..0000000 Binary files a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_2.png and /dev/null differ diff --git a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_3.png b/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_3.png deleted file mode 100644 index f0e8822..0000000 Binary files a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_3.png and /dev/null differ diff --git a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_4.png b/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_4.png deleted file mode 100644 index d6a513c..0000000 Binary files a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_4.png and /dev/null differ diff --git a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_5.png b/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_5.png deleted file mode 100644 index 249881e..0000000 Binary files a/common/src/main/resources/assets/sow/textures/entity/ender_knight/ender_knight_5.png and /dev/null differ diff --git a/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_boots.png b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_boots.png new file mode 100644 index 0000000..1d19516 Binary files /dev/null and b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_boots.png differ diff --git a/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_chestplate.png b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_chestplate.png new file mode 100644 index 0000000..e179fdc Binary files /dev/null and b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_chestplate.png differ diff --git a/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_helmet.png b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_helmet.png new file mode 100644 index 0000000..720f1f5 Binary files /dev/null and b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_helmet.png differ diff --git a/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_leggings.png b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_leggings.png new file mode 100644 index 0000000..a9bbd54 Binary files /dev/null and b/common/src/main/resources/assets/sow/textures/item/armor/ender_knight_leggings.png differ diff --git a/common/src/main/resources/assets/sow/textures/models/armor/ender_knight_layer_1.png b/common/src/main/resources/assets/sow/textures/models/armor/ender_knight_layer_1.png new file mode 100644 index 0000000..48f4f1b Binary files /dev/null and b/common/src/main/resources/assets/sow/textures/models/armor/ender_knight_layer_1.png differ diff --git a/common/src/main/resources/assets/sow/textures/models/armor/ender_knight_layer_2.png b/common/src/main/resources/assets/sow/textures/models/armor/ender_knight_layer_2.png new file mode 100644 index 0000000..2daa13b Binary files /dev/null and b/common/src/main/resources/assets/sow/textures/models/armor/ender_knight_layer_2.png differ diff --git a/fabric/build.gradle b/fabric/build.gradle index 782957b..f7af7e1 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -31,7 +31,7 @@ dependencies { // Don't need this. Trinkets has embedded version 5.2.0. // Neptune cross-platform library - modImplementation "maven.modrinth:neptune:zMTlhkbC" + modImplementation "maven.modrinth:neptune:EtKuwNMX" modImplementation "maven.modrinth:jupiter:elRfRGl9" diff --git a/forge/build.gradle b/forge/build.gradle index 6189924..47549f8 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -31,7 +31,7 @@ dependencies { modImplementation "top.theillusivec4.curios:curios-forge:${curios_version}" // Neptune cross-platform library - modImplementation "maven.modrinth:neptune:aI22NA1F" + modImplementation "maven.modrinth:neptune:gC9SvvIC" modImplementation "maven.modrinth:jupiter:5WrVm4v6" diff --git a/forge/src/main/java/com/iafenvoy/sow/forge/SongsOfWarForge.java b/forge/src/main/java/com/iafenvoy/sow/forge/SongsOfWarForge.java index 6bbdafb..cc3a42a 100644 --- a/forge/src/main/java/com/iafenvoy/sow/forge/SongsOfWarForge.java +++ b/forge/src/main/java/com/iafenvoy/sow/forge/SongsOfWarForge.java @@ -10,6 +10,8 @@ import net.minecraft.text.Text; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.ConfigScreenHandler; +import net.minecraftforge.client.event.ClientPlayerNetworkEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod;