From 70f13400d516375407f7ffa33d853bc1402bb081 Mon Sep 17 00:00:00 2001 From: Draylar <samuelhimes@gmail.com> Date: Fri, 11 Jun 2021 21:03:07 -0500 Subject: [PATCH] 1.17 update --- build.gradle | 22 +++--- gradle.properties | 15 ++-- gradle/wrapper/gradle-wrapper.properties | 4 +- .../java/draylar/identity/IdentityClient.java | 2 +- .../ability/AbilityOverlayRenderer.java | 40 +--------- .../ability/impl/EndermiteAbility.java | 2 +- .../identity/ability/impl/GhastAbility.java | 5 +- .../ability/impl/SnowGolemAbility.java | 2 +- .../identity/ability/impl/WitchAbility.java | 2 +- .../ability/impl/WitherEntityAbility.java | 2 +- .../identity/api/model/EntityArms.java | 28 +++---- .../identity/api/model/EntityUpdaters.java | 4 +- .../identity/cca/AbilityComponent.java | 6 +- .../cca/FavoriteIdentitiesComponent.java | 16 ++-- .../identity/cca/HostilityComponent.java | 6 +- .../identity/cca/IdentityComponent.java | 21 +++-- .../cca/UnlockedIdentitiesComponent.java | 19 ++--- .../identity/mixin/BipedEntityModelMixin.java | 9 +-- .../identity/mixin/LivingEntityMixin.java | 4 +- .../identity/mixin/PiglinBrainMixin.java | 5 +- .../identity/mixin/PiglinBruteBrainMixin.java | 5 +- .../mixin/PlayerAdvancementTrackerMixin.java | 2 +- .../mixin/PlayerEntityRendererMixin.java | 16 ++-- .../identity/mixin/PlayerManagerMixin.java | 2 +- .../identity/mixin/RavagerEntityMixin.java | 12 +-- .../identity/mixin/ScreenAccessor.java | 14 ++++ .../mixin/ServerPlayerEntityMixin.java | 4 +- .../identity/mixin/WitherEntityMixin.java | 4 +- .../draylar/identity/registry/Components.java | 2 +- .../identity/screen/IdentityScreen.java | 34 ++++---- .../draylar/identity/screen/ScreenUtils.java | 79 +++++++++---------- .../identity/screen/widget/EntityWidget.java | 21 +++-- .../identity/screen/widget/PlayerWidget.java | 13 ++- src/main/resources/identity.accesswidener | 8 +- src/main/resources/identity.mixins.json | 9 ++- 35 files changed, 215 insertions(+), 224 deletions(-) create mode 100644 src/main/java/draylar/identity/mixin/ScreenAccessor.java diff --git a/build.gradle b/build.gradle index b948ffa..14531d2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,10 @@ plugins { - id 'fabric-loom' version '0.5.9' + id 'fabric-loom' version '0.8-SNAPSHOT' id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +sourceCompatibility = JavaVersion.VERSION_16 +targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = project.archives_base_name version = project.mod_version + "-" + project.minecraft_version @@ -30,22 +30,23 @@ repositories { dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modCompile "net.fabricmc:fabric-loader:${project.loader_version}" - - modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + // Player Ability Lib: https://github.com/Ladysnake/PlayerAbilityLib include "io.github.ladysnake:PlayerAbilityLib:${project.pal_version}" modImplementation ("io.github.ladysnake:PlayerAbilityLib:${project.pal_version}") { exclude group: "net.fabricmc.fabric-api" } + // Cardinal Components: https://github.com/OnyxStudios/Cardinal-Components-API modImplementation "io.github.onyxstudios:Cardinal-Components-API:${project.cardinal_version}" include "io.github.onyxstudios:Cardinal-Components-API:${project.cardinal_version}" include "io.github.onyxstudios.Cardinal-Components-API:cardinal-components-base:${project.cardinal_version}" include "io.github.onyxstudios.Cardinal-Components-API:cardinal-components-entity:${project.cardinal_version}" // prevent log spam - modCompile 'com.github.Draylar:angerable-patch:1.0.0' + modImplementation 'com.github.Draylar:angerable-patch:1.0.0' include 'com.github.Draylar:angerable-patch:1.0.0' // config @@ -56,14 +57,9 @@ dependencies { processResources { inputs.property "version", project.version - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" + filesMatching('fabric.mod.json') { expand "version": project.version } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } } // ensure that the encoding is set to UTF-8, no matter what the system default is diff --git a/gradle.properties b/gradle.properties index 784292e..4086f1d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,18 +3,17 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.16.5 -yarn_mappings=1.16.5+build.4 -loader_version=0.11.1 +minecraft_version=1.17 +yarn_mappings=1.17+build.9 +loader_version=.11.3 # Mod Properties -mod_version=1.13.2 +mod_version=1.14.0-beta maven_group=draylar archives_base_name=identity # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.34.1+1.16 -auto_config_version=3.2.2 -cardinal_version=2.8.2 -pal_version=1.2.1 +fabric_version=0.35.0+1.17 +cardinal_version=3.0.0-nightly.1.17-pre2 +pal_version=1.3.0-nightly.1.17-rc1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 622ab64..573fe49 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/src/main/java/draylar/identity/IdentityClient.java b/src/main/java/draylar/identity/IdentityClient.java index ae15daa..1254ed8 100644 --- a/src/main/java/draylar/identity/IdentityClient.java +++ b/src/main/java/draylar/identity/IdentityClient.java @@ -13,7 +13,7 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.options.KeyBinding; +import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; import net.minecraft.entity.LivingEntity; import org.lwjgl.glfw.GLFW; diff --git a/src/main/java/draylar/identity/ability/AbilityOverlayRenderer.java b/src/main/java/draylar/identity/ability/AbilityOverlayRenderer.java index 178af76..d857b6d 100644 --- a/src/main/java/draylar/identity/ability/AbilityOverlayRenderer.java +++ b/src/main/java/draylar/identity/ability/AbilityOverlayRenderer.java @@ -116,8 +116,10 @@ else if (ticksSinceUpdate > fadingProgress) { // TODO: cache ability stack? // MinecraftClient.getInstance().getItemRenderer().renderGuiItemIcon(new ItemStack(identityAbility.getIcon()), (int) (width * .95f), (int) (height * .92f)); ItemStack stack = new ItemStack(identityAbility.getIcon()); - BakedModel heldItemModel = MinecraftClient.getInstance().getItemRenderer().getHeldItemModel(stack, client.world, player); - renderGuiItemModel(matrices, stack, (int) (width * .95f), (int) (height * .92f), heldItemModel); +// BakedModel heldItemModel = MinecraftClient.getInstance().getItemRenderer().getHeldItemModel(stack, client.world, player); +// renderGuiItemModel(matrices, stack, (int) (width * .95f), (int) (height * .92f), heldItemModel); + MinecraftClient.getInstance().getItemRenderer() + .renderGuiItemIcon(stack, (int) (width * .95f), (int) (height * .92f)); RenderSystem.disableScissor(); matrices.pop(); @@ -125,40 +127,6 @@ else if (ticksSinceUpdate > fadingProgress) { }); } - protected static void renderGuiItemModel(MatrixStack matrices, ItemStack stack, int x, int y, BakedModel model) { - RenderSystem.pushMatrix(); - - MinecraftClient.getInstance().getTextureManager().bindTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE); - MinecraftClient.getInstance().getTextureManager().getTexture(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE).setFilter(false, false); - - RenderSystem.enableRescaleNormal(); - RenderSystem.enableAlphaTest(); - RenderSystem.defaultAlphaFunc(); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.translatef((float) x, (float) y, 100.0F); - RenderSystem.translatef(8.0F, 8.0F, 0.0F); - RenderSystem.scalef(1.0F, -1.0F, 1.0F); - RenderSystem.scalef(16.0F, 16.0F, 16.0F); - VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); - boolean bl = !model.isSideLit(); - if (bl) { - DiffuseLighting.disableGuiDepthLighting(); - } - - MinecraftClient.getInstance().getItemRenderer().renderItem(stack, ModelTransformation.Mode.GUI, false, matrices, immediate, 15728880, OverlayTexture.DEFAULT_UV, model); - immediate.draw(); - RenderSystem.enableDepthTest(); - if (bl) { - DiffuseLighting.enableGuiDepthLighting(); - } - - RenderSystem.disableAlphaTest(); - RenderSystem.disableRescaleNormal(); - RenderSystem.popMatrix(); - } - private AbilityOverlayRenderer() { // NO-OP } diff --git a/src/main/java/draylar/identity/ability/impl/EndermiteAbility.java b/src/main/java/draylar/identity/ability/impl/EndermiteAbility.java index 79bbfaa..133791b 100644 --- a/src/main/java/draylar/identity/ability/impl/EndermiteAbility.java +++ b/src/main/java/draylar/identity/ability/impl/EndermiteAbility.java @@ -23,7 +23,7 @@ public void onUse(PlayerEntity player, EndermiteEntity identity, World world) { for(int i = 0; i < 16; ++i) { // Pick a random location nearby to teleport to. double g = player.getX() + (player.getRandom().nextDouble() - 0.5D) * 16.0D; - double h = MathHelper.clamp(player.getY() + (double)(player.getRandom().nextInt(16) - 8), 0.0D, world.getDimensionHeight() - 1); + double h = MathHelper.clamp(player.getY() + (double)(player.getRandom().nextInt(16) - 8), 0.0D, world.getHeight() - 1); double j = player.getZ() + (player.getRandom().nextDouble() - 0.5D) * 16.0D; // Cancel vehicle/riding mechanics. diff --git a/src/main/java/draylar/identity/ability/impl/GhastAbility.java b/src/main/java/draylar/identity/ability/impl/GhastAbility.java index e20d64e..e5b7c10 100644 --- a/src/main/java/draylar/identity/ability/impl/GhastAbility.java +++ b/src/main/java/draylar/identity/ability/impl/GhastAbility.java @@ -20,10 +20,11 @@ public void onUse(PlayerEntity player, GhastEntity identity, World world) { player, player.getRotationVector().x, player.getRotationVector().y, - player.getRotationVector().z + player.getRotationVector().z, + 2 ); - fireball.refreshPositionAndAngles(fireball.getX(), fireball.getY() + 1.75, fireball.getZ(), fireball.yaw, fireball.pitch); + fireball.refreshPositionAndAngles(fireball.getX(), fireball.getY() + 1.75, fireball.getZ(), fireball.getYaw(), fireball.getPitch()); fireball.updatePosition(fireball.getX(), fireball.getY(), fireball.getZ()); world.spawnEntity(fireball); world.playSoundFromEntity(null, player, SoundEvents.ENTITY_GHAST_SHOOT, SoundCategory.HOSTILE, 10.0F, (world.random.nextFloat() - world.random.nextFloat()) * 0.2F + 1.0F); diff --git a/src/main/java/draylar/identity/ability/impl/SnowGolemAbility.java b/src/main/java/draylar/identity/ability/impl/SnowGolemAbility.java index dabdc47..c7a1667 100644 --- a/src/main/java/draylar/identity/ability/impl/SnowGolemAbility.java +++ b/src/main/java/draylar/identity/ability/impl/SnowGolemAbility.java @@ -22,7 +22,7 @@ public void onUse(PlayerEntity player, SnowGolemEntity identity, World world) { for(int i = 0; i < 10; i++) { SnowballEntity snowballEntity = new SnowballEntity(world, player); snowballEntity.setItem(new ItemStack(Items.SNOWBALL)); - snowballEntity.setProperties(player, player.pitch + world.random.nextInt(10) - 5, player.yaw + world.random.nextInt(10) - 5, 0.0F, 1.5F, 1.0F); + snowballEntity.setProperties(player, player.getPitch() + world.random.nextInt(10) - 5, player.getYaw() + world.random.nextInt(10) - 5, 0.0F, 1.5F, 1.0F); world.spawnEntity(snowballEntity); } } diff --git a/src/main/java/draylar/identity/ability/impl/WitchAbility.java b/src/main/java/draylar/identity/ability/impl/WitchAbility.java index ffc7eb5..2dfe60a 100644 --- a/src/main/java/draylar/identity/ability/impl/WitchAbility.java +++ b/src/main/java/draylar/identity/ability/impl/WitchAbility.java @@ -25,7 +25,7 @@ public class WitchAbility extends IdentityAbility<WitchEntity> { public void onUse(PlayerEntity player, WitchEntity identity, World world) { PotionEntity potionEntity = new PotionEntity(world, player); potionEntity.setItem(PotionUtil.setPotion(new ItemStack(Items.SPLASH_POTION), VALID_POTIONS.get(world.random.nextInt(VALID_POTIONS.size())))); - potionEntity.pitch -= -20.0F; + potionEntity.setPitch(-20.0F); Vec3d rotation = player.getRotationVector(); potionEntity.setVelocity(rotation.getX(), rotation.getY(), rotation.getZ(), 0.75F, 8.0F); diff --git a/src/main/java/draylar/identity/ability/impl/WitherEntityAbility.java b/src/main/java/draylar/identity/ability/impl/WitherEntityAbility.java index 21a68cd..1c2d807 100644 --- a/src/main/java/draylar/identity/ability/impl/WitherEntityAbility.java +++ b/src/main/java/draylar/identity/ability/impl/WitherEntityAbility.java @@ -22,7 +22,7 @@ public void onUse(PlayerEntity player, WitherEntity identity, World world) { Vec3d lookDirection = player.getRotationVector(); WitherSkullEntity skull = new WitherSkullEntity(world, player, lookDirection.x, lookDirection.y, lookDirection.z); skull.setPos(player.getX(), player.getY() + 2, player.getZ()); - skull.setProperties(player, player.pitch, player.yaw, 0.0F, 1.5F, 1.0F); + skull.setProperties(player, player.getPitch(), player.getYaw(), 0.0F, 1.5F, 1.0F); world.spawnEntity(skull); } } diff --git a/src/main/java/draylar/identity/api/model/EntityArms.java b/src/main/java/draylar/identity/api/model/EntityArms.java index d4d976d..f43a764 100644 --- a/src/main/java/draylar/identity/api/model/EntityArms.java +++ b/src/main/java/draylar/identity/api/model/EntityArms.java @@ -3,17 +3,13 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.ModelPart; -import net.minecraft.client.render.entity.EvokerEntityRenderer; import net.minecraft.client.render.entity.model.*; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.util.math.Vector3f; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.mob.PillagerEntity; import net.minecraft.util.Pair; +import net.minecraft.util.math.Vec3f; import org.jetbrains.annotations.Nullable; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; @@ -72,26 +68,26 @@ public static <T extends LivingEntity> EntityArmProvider<T> get(Class<EntityMode public static void init() { // specific register(LlamaEntityModel.class, (llama, model) -> model.rightFrontLeg, (stack, model) -> {}); - register(PandaEntityModel.class, (llama, model) -> model.frontRightLeg, (stack, model) -> stack.translate(0, -0.5, 0)); + register(PandaEntityModel.class, (llama, model) -> model.rightFrontLeg, (stack, model) -> stack.translate(0, -0.5, 0)); register(BlazeEntityModel.class, (llama, model) -> model.rods[10], (stack, model) -> { - stack.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(45)); - stack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-15)); - stack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-25)); + stack.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(45)); + stack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-15)); + stack.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-25)); stack.translate(0, 0, -.25); }); register(OcelotEntityModel.class, (ocelot, model) -> model.rightFrontLeg, (stack, model) -> {}); register(SpiderEntityModel.class, (spider, model) -> model.rightFrontLeg, (stack, model) -> { - stack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-15)); - stack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(15)); + stack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-15)); + stack.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(15)); stack.translate(0, 0, 0); }); register(IronGolemEntityModel.class, (golem, model) -> model.getRightArm(), (stack, model) -> { stack.translate(0, 0, -.5); }); - register(PigEntityModel.class, (pig, model) -> model.frontRightLeg, (stack, model) -> { + register(PigEntityModel.class, (pig, model) -> model.rightFrontLeg, (stack, model) -> { stack.translate(0, 0, .6); }); - register(PolarBearEntityModel.class, (bear, model) -> model.frontRightLeg, (stack, model) -> { + register(PolarBearEntityModel.class, (bear, model) -> model.rightFrontLeg, (stack, model) -> { stack.translate(0, 0, .3); }); register(RavagerEntityModel.class, (bear, model) -> model.rightFrontLeg, (stack, model) -> { }); @@ -100,11 +96,11 @@ public static void init() { }); // generic - register(QuadrupedEntityModel.class, (quad, model) -> model.frontRightLeg, (stack, model) -> {}); + register(QuadrupedEntityModel.class, (quad, model) -> model.rightFrontLeg, (stack, model) -> {}); // types - register(EntityType.PILLAGER, (pillager, model) -> ((IllagerEntityModel) model).rightAttackingArm, (stack, model) -> { - stack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-10)); + register(EntityType.PILLAGER, (pillager, model) -> ((IllagerEntityModel) model).rightArm, (stack, model) -> { + stack.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-10)); stack.translate(0, .5, -.3); }); } diff --git a/src/main/java/draylar/identity/api/model/EntityUpdaters.java b/src/main/java/draylar/identity/api/model/EntityUpdaters.java index 86d3b52..4970483 100644 --- a/src/main/java/draylar/identity/api/model/EntityUpdaters.java +++ b/src/main/java/draylar/identity/api/model/EntityUpdaters.java @@ -95,7 +95,7 @@ public static void init() { // setting yaw without +180 making tail faces front, for some reason if (dragon.latestSegment < 0) { for (int l = 0; l < dragon.segmentCircularBuffer.length; ++l) { - dragon.segmentCircularBuffer[l][0] = (double) player.yaw + 180; + dragon.segmentCircularBuffer[l][0] = (double) player.getYaw() + 180; dragon.segmentCircularBuffer[l][1] = player.getY(); } } @@ -104,7 +104,7 @@ public static void init() { (dragon).latestSegment = 0; } - dragon.segmentCircularBuffer[dragon.latestSegment][0] = (double) player.yaw + 180; + dragon.segmentCircularBuffer[dragon.latestSegment][0] = (double) player.getYaw() + 180; dragon.segmentCircularBuffer[dragon.latestSegment][1] = player.getY(); }); diff --git a/src/main/java/draylar/identity/cca/AbilityComponent.java b/src/main/java/draylar/identity/cca/AbilityComponent.java index c1a4bab..4455ffc 100644 --- a/src/main/java/draylar/identity/cca/AbilityComponent.java +++ b/src/main/java/draylar/identity/cca/AbilityComponent.java @@ -4,7 +4,7 @@ import dev.onyxstudios.cca.api.v3.component.tick.ServerTickingComponent; import draylar.identity.registry.Components; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtCompound; public class AbilityComponent implements AutoSyncedComponent, ServerTickingComponent { @@ -18,12 +18,12 @@ public AbilityComponent(PlayerEntity player) { } @Override - public void readFromNbt(CompoundTag tag) { + public void readFromNbt(NbtCompound tag) { this.cooldown = tag.getInt(ABILITY_COOLDOWN_KEY); } @Override - public void writeToNbt(CompoundTag tag) { + public void writeToNbt(NbtCompound tag) { tag.putInt(ABILITY_COOLDOWN_KEY, cooldown); } diff --git a/src/main/java/draylar/identity/cca/FavoriteIdentitiesComponent.java b/src/main/java/draylar/identity/cca/FavoriteIdentitiesComponent.java index b0c56f6..74e5c3a 100644 --- a/src/main/java/draylar/identity/cca/FavoriteIdentitiesComponent.java +++ b/src/main/java/draylar/identity/cca/FavoriteIdentitiesComponent.java @@ -5,9 +5,9 @@ import net.fabricmc.fabric.api.util.NbtType; import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtList; +import net.minecraft.nbt.NbtString; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -53,16 +53,16 @@ public void unfavorite(Identifier id) { } @Override - public void readFromNbt(CompoundTag tag) { + public void readFromNbt(NbtCompound tag) { favorites.clear(); - ListTag idList = tag.getList("FavoriteIdentities", NbtType.STRING); + NbtList idList = tag.getList("FavoriteIdentities", NbtType.STRING); idList.forEach(idTag -> favorites.add(new Identifier(idTag.asString()))); } @Override - public void writeToNbt(CompoundTag tag) { - ListTag idList = new ListTag(); - favorites.forEach(entityId -> idList.add(StringTag.of(entityId.toString()))); + public void writeToNbt(NbtCompound tag) { + NbtList idList = new NbtList(); + favorites.forEach(entityId -> idList.add(NbtString.of(entityId.toString()))); tag.put("FavoriteIdentities", idList); } } diff --git a/src/main/java/draylar/identity/cca/HostilityComponent.java b/src/main/java/draylar/identity/cca/HostilityComponent.java index e724ec2..4b4dbaf 100644 --- a/src/main/java/draylar/identity/cca/HostilityComponent.java +++ b/src/main/java/draylar/identity/cca/HostilityComponent.java @@ -1,7 +1,7 @@ package draylar.identity.cca; import dev.onyxstudios.cca.api.v3.component.tick.ServerTickingComponent; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtCompound; public class HostilityComponent implements ServerTickingComponent { @@ -12,12 +12,12 @@ public HostilityComponent() { } @Override - public void readFromNbt(CompoundTag tag) { + public void readFromNbt(NbtCompound tag) { this.remainingTime = tag.getInt("RemainingTime"); } @Override - public void writeToNbt(CompoundTag tag) { + public void writeToNbt(NbtCompound tag) { tag.putInt("RemainingTime", remainingTime); } diff --git a/src/main/java/draylar/identity/cca/IdentityComponent.java b/src/main/java/draylar/identity/cca/IdentityComponent.java index f11ef59..a7ccf7e 100644 --- a/src/main/java/draylar/identity/cca/IdentityComponent.java +++ b/src/main/java/draylar/identity/cca/IdentityComponent.java @@ -19,9 +19,8 @@ import net.minecraft.entity.passive.TameableEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.vehicle.BoatEntity; -import net.minecraft.item.AirBlockItem; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtCompound; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.ActionResult; import net.minecraft.util.math.BlockPos; @@ -87,11 +86,11 @@ public boolean setIdentity(LivingEntity identity) { // update flight properties on player depending on identity if (Identity.hasFlyingPermissions((ServerPlayerEntity) player)) { Identity.ABILITY_SOURCE.grantTo(player, VanillaAbilities.ALLOW_FLYING); - player.abilities.flySpeed = Identity.CONFIG.flySpeed; + player.getAbilities().flySpeed = Identity.CONFIG.flySpeed; player.sendAbilitiesUpdate(); } else { Identity.ABILITY_SOURCE.revokeFrom(player, VanillaAbilities.ALLOW_FLYING); - player.abilities.flySpeed = 0.05f; + player.getAbilities().flySpeed = 0.05f; player.sendAbilitiesUpdate(); } @@ -223,8 +222,8 @@ private void tickTemperature() { } @Override - public void readFromNbt(CompoundTag tag) { - Optional<EntityType<?>> type = EntityType.fromTag(tag); + public void readFromNbt(NbtCompound tag) { + Optional<EntityType<?>> type = EntityType.fromNbt(tag); // set identity to null (no identity) if the entity id is "minecraft:empty" if (tag.getString("id").equals("minecraft:empty")) { @@ -234,7 +233,7 @@ public void readFromNbt(CompoundTag tag) { // if entity type was valid, deserialize entity data from tag else if (type.isPresent()) { - CompoundTag entityTag = tag.getCompound("EntityData"); + NbtCompound entityTag = tag.getCompound("EntityData"); // ensure entity data exists if (entityTag != null) { @@ -245,18 +244,18 @@ else if (type.isPresent()) { ((DimensionsRefresher) player).identity_refreshDimensions(); } - identity.fromTag(entityTag); + identity.readNbt(entityTag); } } } @Override - public void writeToNbt(CompoundTag tag) { - CompoundTag entityTag = new CompoundTag(); + public void writeToNbt(NbtCompound tag) { + NbtCompound entityTag = new NbtCompound(); // serialize current identity data to tag if it exists if (identity != null) { - identity.toTag(entityTag); + identity.writeNbt(entityTag); } // put entity type ID under the key "id", or "minecraft:empty" if no identity is equipped (or the identity entity type is invalid) diff --git a/src/main/java/draylar/identity/cca/UnlockedIdentitiesComponent.java b/src/main/java/draylar/identity/cca/UnlockedIdentitiesComponent.java index e2b939c..87ab549 100644 --- a/src/main/java/draylar/identity/cca/UnlockedIdentitiesComponent.java +++ b/src/main/java/draylar/identity/cca/UnlockedIdentitiesComponent.java @@ -3,15 +3,12 @@ import dev.onyxstudios.cca.api.v3.component.sync.AutoSyncedComponent; import draylar.identity.api.event.UnlockIdentityCallback; import draylar.identity.registry.Components; -import nerdhub.cardinal.components.api.ComponentType; -import nerdhub.cardinal.components.api.util.sync.EntitySyncedComponent; import net.fabricmc.fabric.api.util.NbtType; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtList; +import net.minecraft.nbt.NbtString; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.ActionResult; import net.minecraft.util.Identifier; @@ -64,11 +61,11 @@ public void revoke(Identifier id) { } @Override - public void readFromNbt(CompoundTag tag) { + public void readFromNbt(NbtCompound tag) { unlocked.clear(); // reminder: do not change this tag - ListTag idList = tag.getList("UnlockedMorphs", NbtType.STRING); + NbtList idList = tag.getList("UnlockedMorphs", NbtType.STRING); idList.forEach(idTag -> { unlocked.add(new Identifier(idTag.asString())); @@ -76,11 +73,11 @@ public void readFromNbt(CompoundTag tag) { } @Override - public void writeToNbt(CompoundTag tag) { - ListTag idList = new ListTag(); + public void writeToNbt(NbtCompound tag) { + NbtList idList = new NbtList(); unlocked.forEach(entityId -> { - idList.add(StringTag.of(entityId.toString())); + idList.add(NbtString.of(entityId.toString())); }); // reminder: do not change this tag diff --git a/src/main/java/draylar/identity/mixin/BipedEntityModelMixin.java b/src/main/java/draylar/identity/mixin/BipedEntityModelMixin.java index 170bd9f..6a1e68d 100644 --- a/src/main/java/draylar/identity/mixin/BipedEntityModelMixin.java +++ b/src/main/java/draylar/identity/mixin/BipedEntityModelMixin.java @@ -1,10 +1,7 @@ package draylar.identity.mixin; import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.entity.BipedEntityRenderer; -import net.minecraft.client.render.entity.EntityRenderDispatcher; -import net.minecraft.client.render.entity.LivingEntityRenderer; -import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.client.render.entity.*; import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.client.render.entity.model.DrownedEntityModel; import net.minecraft.client.render.entity.model.EntityModel; @@ -20,8 +17,8 @@ @Mixin(MobEntityRenderer.class) public abstract class BipedEntityModelMixin extends LivingEntityRenderer { - public BipedEntityModelMixin(EntityRenderDispatcher dispatcher, EntityModel model, float shadowRadius) { - super(dispatcher, model, shadowRadius); + private BipedEntityModelMixin(EntityRendererFactory.Context ctx, EntityModel model, float shadowRadius) { + super(ctx, model, shadowRadius); } @Inject( diff --git a/src/main/java/draylar/identity/mixin/LivingEntityMixin.java b/src/main/java/draylar/identity/mixin/LivingEntityMixin.java index 276151d..66e1d84 100644 --- a/src/main/java/draylar/identity/mixin/LivingEntityMixin.java +++ b/src/main/java/draylar/identity/mixin/LivingEntityMixin.java @@ -114,12 +114,12 @@ private boolean applyWaterCreatureSwimSpeedBoost(LivingEntity livingEntity, Stat at = @At(value = "HEAD"), cancellable = true ) - private void handleFallDamage(float fallDistance, float damageMultiplier, CallbackInfoReturnable<Boolean> cir) { + private void handleFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource, CallbackInfoReturnable<Boolean> cir) { if((Object) this instanceof PlayerEntity) { LivingEntity identity = Components.CURRENT_IDENTITY.get(this).getIdentity(); if (identity != null) { - boolean takesFallDamage = identity.handleFallDamage(fallDistance, damageMultiplier); + boolean takesFallDamage = identity.handleFallDamage(fallDistance, damageMultiplier, damageSource); int damageAmount = ((LivingEntityAccessor) identity).callComputeFallDamage(fallDistance, damageMultiplier); if (takesFallDamage && damageAmount > 0) { diff --git a/src/main/java/draylar/identity/mixin/PiglinBrainMixin.java b/src/main/java/draylar/identity/mixin/PiglinBrainMixin.java index 557423d..1ff4053 100644 --- a/src/main/java/draylar/identity/mixin/PiglinBrainMixin.java +++ b/src/main/java/draylar/identity/mixin/PiglinBrainMixin.java @@ -6,6 +6,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.mob.Monster; import net.minecraft.entity.mob.PiglinBrain; +import net.minecraft.entity.mob.PiglinEntity; import net.minecraft.entity.player.PlayerEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -16,11 +17,11 @@ public class PiglinBrainMixin { @Inject( - method = "shouldAttack", + method = "isPreferredAttackTarget", at = @At("RETURN"), cancellable = true ) - private static void shouldAttackIdentity(LivingEntity target, CallbackInfoReturnable<Boolean> cir) { + private static void shouldAttackIdentity(PiglinEntity piglin, LivingEntity target, CallbackInfoReturnable<Boolean> cir) { boolean shouldAttack = cir.getReturnValue(); if(shouldAttack && target instanceof PlayerEntity) { diff --git a/src/main/java/draylar/identity/mixin/PiglinBruteBrainMixin.java b/src/main/java/draylar/identity/mixin/PiglinBruteBrainMixin.java index 7f9c3bf..b42ba0d 100644 --- a/src/main/java/draylar/identity/mixin/PiglinBruteBrainMixin.java +++ b/src/main/java/draylar/identity/mixin/PiglinBruteBrainMixin.java @@ -18,8 +18,9 @@ public class PiglinBruteBrainMixin { /** * @author Draylar - * method_30249 searches for a nearby player to aggro on. - * This mixin modifies the search logic to exclude players digsuised as anything besides a Wither Skeleton or Wither. + * + * @reason method_30249 searches for a nearby player to aggro on. + * This mixin modifies the search logic to exclude players disguised as anything besides a Wither Skeleton or Wither. */ @Overwrite private static Optional<? extends LivingEntity> method_30249(AbstractPiglinEntity abstractPiglinEntity, MemoryModuleType<? extends LivingEntity> memoryModuleType) { diff --git a/src/main/java/draylar/identity/mixin/PlayerAdvancementTrackerMixin.java b/src/main/java/draylar/identity/mixin/PlayerAdvancementTrackerMixin.java index 509970a..c2e121c 100644 --- a/src/main/java/draylar/identity/mixin/PlayerAdvancementTrackerMixin.java +++ b/src/main/java/draylar/identity/mixin/PlayerAdvancementTrackerMixin.java @@ -23,7 +23,7 @@ public class PlayerAdvancementTrackerMixin { private void refreshFlight(Advancement advancement, String criterionName, CallbackInfoReturnable<Boolean> cir) { if(Identity.hasFlyingPermissions(owner)) { Identity.ABILITY_SOURCE.grantTo(owner, VanillaAbilities.ALLOW_FLYING); - owner.abilities.flySpeed = Identity.CONFIG.flySpeed; + owner.getAbilities().flySpeed = Identity.CONFIG.flySpeed; owner.sendAbilitiesUpdate(); } } diff --git a/src/main/java/draylar/identity/mixin/PlayerEntityRendererMixin.java b/src/main/java/draylar/identity/mixin/PlayerEntityRendererMixin.java index 01a0dd6..928d841 100644 --- a/src/main/java/draylar/identity/mixin/PlayerEntityRendererMixin.java +++ b/src/main/java/draylar/identity/mixin/PlayerEntityRendererMixin.java @@ -40,12 +40,12 @@ public abstract class PlayerEntityRendererMixin extends LivingEntityRenderer<AbstractClientPlayerEntity, PlayerEntityModel<AbstractClientPlayerEntity>> { @Shadow - protected static BipedEntityModel.ArmPose getArmPose(AbstractClientPlayerEntity abstractClientPlayerEntity, Hand hand) { + protected static BipedEntityModel.ArmPose getArmPose(AbstractClientPlayerEntity player, Hand hand) { return null; } - private PlayerEntityRendererMixin(EntityRenderDispatcher dispatcher, PlayerEntityModel<AbstractClientPlayerEntity> model, float shadowSize) { - super(dispatcher, model, shadowSize); + private PlayerEntityRendererMixin(EntityRendererFactory.Context ctx, PlayerEntityModel<AbstractClientPlayerEntity> model, float shadowRadius) { + super(ctx, model, shadowRadius); } @Redirect( @@ -76,10 +76,10 @@ private void redirectRender(LivingEntityRenderer renderer, LivingEntity player, // phantoms' pitch is inverse for whatever reason if(identity instanceof PhantomEntity) { - identity.pitch = -player.pitch; + identity.setPitch(-player.getPitch()); identity.prevPitch = -player.prevPitch; } else { - identity.pitch = player.pitch; + identity.setPitch(player.getPitch()); identity.prevPitch = player.prevPitch; } @@ -142,16 +142,16 @@ private void identity_setBipedIdentityModelPose(AbstractClientPlayerEntity playe if (identity.isSpectator()) { identityBipedModel.setVisible(false); identityBipedModel.head.visible = true; - identityBipedModel.helmet.visible = true; + identityBipedModel.hat.visible = true; } else { identityBipedModel.setVisible(true); - identityBipedModel.helmet.visible = player.isPartVisible(PlayerModelPart.HAT); + identityBipedModel.hat.visible = player.isPartVisible(PlayerModelPart.HAT); identityBipedModel.sneaking = identity.isInSneakingPose(); BipedEntityModel.ArmPose mainHandPose = getArmPose(player, Hand.MAIN_HAND); BipedEntityModel.ArmPose offHandPose = getArmPose(player, Hand.OFF_HAND); - if (mainHandPose.method_30156()) { + if (mainHandPose.isTwoHanded()) { offHandPose = identity.getOffHandStack().isEmpty() ? BipedEntityModel.ArmPose.EMPTY : BipedEntityModel.ArmPose.ITEM; } diff --git a/src/main/java/draylar/identity/mixin/PlayerManagerMixin.java b/src/main/java/draylar/identity/mixin/PlayerManagerMixin.java index f2df9fc..151c700 100644 --- a/src/main/java/draylar/identity/mixin/PlayerManagerMixin.java +++ b/src/main/java/draylar/identity/mixin/PlayerManagerMixin.java @@ -43,7 +43,7 @@ private void onRespawn(ServerPlayerEntity player, boolean alive, CallbackInfoRet if (identity != null && Identity.CONFIG.scalingHealth) { player.setHealth(Math.min(player.getHealth(), identity.getMaxHealth())); player.getAttributeInstance(EntityAttributes.GENERIC_MAX_HEALTH).setBaseValue(Math.min(Identity.CONFIG.maxHealth, identity.getMaxHealth())); - ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, new EntityAttributesS2CPacket(player.getEntityId(), player.getAttributes().getAttributesToSend())); + ServerSidePacketRegistry.INSTANCE.sendToPlayer(player, new EntityAttributesS2CPacket(player.getId(), player.getAttributes().getAttributesToSend())); } } } diff --git a/src/main/java/draylar/identity/mixin/RavagerEntityMixin.java b/src/main/java/draylar/identity/mixin/RavagerEntityMixin.java index 2cddf2d..5b1ac37 100644 --- a/src/main/java/draylar/identity/mixin/RavagerEntityMixin.java +++ b/src/main/java/draylar/identity/mixin/RavagerEntityMixin.java @@ -32,11 +32,11 @@ public void travel(Vec3d movementInput) { // Only players should be able to control Ravager if (rider instanceof PlayerEntity) { // Assign rider properties to ravager - this.yaw = rider.yaw; - this.prevYaw = this.yaw; - this.pitch = rider.pitch * 0.5F; - this.setRotation(this.yaw, this.pitch); - this.bodyYaw = this.yaw; + this.setYaw(rider.getYaw()); + this.prevYaw = this.getYaw(); + this.setPitch(rider.getPitch() * 0.5F); + this.setRotation(this.getYaw(), this.getPitch()); + this.bodyYaw = this.getYaw(); this.headYaw = this.bodyYaw; float sidewaysSpeed = rider.sidewaysSpeed * 0.5F; float forwardSpeed = rider.forwardSpeed; @@ -56,7 +56,7 @@ public void travel(Vec3d movementInput) { } // Limb updates for movement - this.method_29242(this, false); + this.updateLimbs(this, false); return; } } diff --git a/src/main/java/draylar/identity/mixin/ScreenAccessor.java b/src/main/java/draylar/identity/mixin/ScreenAccessor.java new file mode 100644 index 0000000..b46e6f0 --- /dev/null +++ b/src/main/java/draylar/identity/mixin/ScreenAccessor.java @@ -0,0 +1,14 @@ +package draylar.identity.mixin; + +import net.minecraft.client.gui.Selectable; +import net.minecraft.client.gui.screen.Screen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(Screen.class) +public interface ScreenAccessor { + @Accessor + List<Selectable> getSelectables(); +} diff --git a/src/main/java/draylar/identity/mixin/ServerPlayerEntityMixin.java b/src/main/java/draylar/identity/mixin/ServerPlayerEntityMixin.java index 3ddfb93..0abc2ef 100644 --- a/src/main/java/draylar/identity/mixin/ServerPlayerEntityMixin.java +++ b/src/main/java/draylar/identity/mixin/ServerPlayerEntityMixin.java @@ -53,14 +53,14 @@ private void revokeIdentityOnDeath(DamageSource source, CallbackInfo ci) { } @Inject( - method = "onSpawn", + method = "onSpawn()V", at = @At("HEAD") ) private void onSpawn(CallbackInfo ci) { if(Identity.hasFlyingPermissions((ServerPlayerEntity) (Object) this)) { if(!Identity.ABILITY_SOURCE.grants((ServerPlayerEntity) (Object) this, VanillaAbilities.ALLOW_FLYING)) { Identity.ABILITY_SOURCE.grantTo((ServerPlayerEntity) (Object) this, VanillaAbilities.ALLOW_FLYING); - ((ServerPlayerEntity) (Object) this).abilities.flySpeed = Identity.CONFIG.flySpeed; + ((ServerPlayerEntity) (Object) this).getAbilities().flySpeed = Identity.CONFIG.flySpeed; ((ServerPlayerEntity) (Object) this).sendAbilitiesUpdate(); } diff --git a/src/main/java/draylar/identity/mixin/WitherEntityMixin.java b/src/main/java/draylar/identity/mixin/WitherEntityMixin.java index e5badfc..c53af69 100644 --- a/src/main/java/draylar/identity/mixin/WitherEntityMixin.java +++ b/src/main/java/draylar/identity/mixin/WitherEntityMixin.java @@ -28,8 +28,8 @@ private WitherEntityMixin(EntityType<? extends HostileEntity> entityType, World at = @At(value = "INVOKE", target = "Ljava/util/List;isEmpty()Z"), locals = LocalCapture.CAPTURE_FAILHARD ) - private void removeInvalidPlayerTargets(CallbackInfo ci, int j, List<LivingEntity> list, int l) { - List<LivingEntity> toRemove = new ArrayList(); + private void removeInvalidPlayerTargets(CallbackInfo ci, int j, List<LivingEntity> list) { + List<LivingEntity> toRemove = new ArrayList<>(); list.forEach(entity -> { if(entity instanceof PlayerEntity) { diff --git a/src/main/java/draylar/identity/registry/Components.java b/src/main/java/draylar/identity/registry/Components.java index a8baca3..e3c5f82 100644 --- a/src/main/java/draylar/identity/registry/Components.java +++ b/src/main/java/draylar/identity/registry/Components.java @@ -4,9 +4,9 @@ import dev.onyxstudios.cca.api.v3.component.ComponentRegistry; import dev.onyxstudios.cca.api.v3.entity.EntityComponentFactoryRegistry; import dev.onyxstudios.cca.api.v3.entity.EntityComponentInitializer; +import dev.onyxstudios.cca.api.v3.entity.RespawnCopyStrategy; import draylar.identity.Identity; import draylar.identity.cca.*; -import nerdhub.cardinal.components.api.util.RespawnCopyStrategy; public class Components implements EntityComponentInitializer { diff --git a/src/main/java/draylar/identity/screen/IdentityScreen.java b/src/main/java/draylar/identity/screen/IdentityScreen.java index ccca49f..ac31eed 100644 --- a/src/main/java/draylar/identity/screen/IdentityScreen.java +++ b/src/main/java/draylar/identity/screen/IdentityScreen.java @@ -4,15 +4,17 @@ import draylar.identity.cca.FavoriteIdentitiesComponent; import draylar.identity.cca.IdentityComponent; import draylar.identity.cca.UnlockedIdentitiesComponent; +import draylar.identity.mixin.ScreenAccessor; import draylar.identity.registry.Components; import draylar.identity.screen.widget.EntityWidget; import draylar.identity.screen.widget.HelpWidget; import draylar.identity.screen.widget.PlayerWidget; import draylar.identity.screen.widget.SearchWidget; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.PressableWidget; import net.minecraft.client.util.Window; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; @@ -41,9 +43,9 @@ public IdentityScreen() { super.init(MinecraftClient.getInstance(), MinecraftClient.getInstance().getWindow().getScaledWidth(), MinecraftClient.getInstance().getWindow().getScaledHeight()); populateRenderEntities(); - addButton(searchBar); - addButton(playerButton); - addButton(helpButton); + addDrawableChild(searchBar); + addDrawableChild(playerButton); + addDrawableChild(helpButton); // get identity components from player UnlockedIdentitiesComponent unlockedComponent = Components.UNLOCKED_IDENTITIES.get(MinecraftClient.getInstance().player); @@ -77,8 +79,8 @@ public IdentityScreen() { // Only re-filter if the text contents changed if(!lastSearchContents.equals(text)) { - buttons.removeIf(button -> button instanceof EntityWidget); - children.removeIf(button -> button instanceof EntityWidget); + ((ScreenAccessor) this).getSelectables().removeIf(button -> button instanceof EntityWidget); + children().removeIf(button -> button instanceof EntityWidget); entityWidgets.clear(); List<LivingEntity> filtered = unlocked @@ -103,6 +105,8 @@ public void init(MinecraftClient client, int width, int height) { this.setFocused(null); } + + @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { renderBackground(matrices); @@ -116,10 +120,12 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { } // tooltips - for (AbstractButtonWidget abstractButtonWidget : this.buttons) { - if (abstractButtonWidget.isHovered()) { - abstractButtonWidget.renderToolTip(matrices, mouseX, mouseY); - break; + for (Selectable selectable : ((ScreenAccessor) this).getSelectables()) { + if(selectable instanceof PressableWidget button) { + if (button.isHovered()) { + button.renderToolTip(matrices, mouseX, mouseY); + break; + } } } @@ -158,9 +164,9 @@ public boolean mouseScrolled(double mouseX, double mouseY, double amount) { return false; } - buttons.forEach(button -> { - if(button instanceof EntityWidget) { - button.y = (int) (button.y + amount * 10); + ((ScreenAccessor) this).getSelectables().forEach(button -> { + if(button instanceof EntityWidget widget) { + widget.y = (int) (widget.y + amount * 10); } }); @@ -198,7 +204,7 @@ private void populateEntityWidgets(List<LivingEntity> unlocked, FavoriteIdentiti isCurrent ); - addButton(entityWidget); + addDrawableChild(entityWidget); entityWidgets.add(entityWidget); } } diff --git a/src/main/java/draylar/identity/screen/ScreenUtils.java b/src/main/java/draylar/identity/screen/ScreenUtils.java index adf5d41..fdd7835 100644 --- a/src/main/java/draylar/identity/screen/ScreenUtils.java +++ b/src/main/java/draylar/identity/screen/ScreenUtils.java @@ -7,7 +7,6 @@ import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.util.math.Vector3f; import net.minecraft.entity.LivingEntity; import net.minecraft.util.math.Quaternion; @@ -15,45 +14,45 @@ public class ScreenUtils { public static void drawEntity(int x, int y, int size, float mouseX, float mouseY, LivingEntity entity) { - drawEntity(x, y, size, mouseX, mouseY, entity, 15728880); +// drawEntity(x, y, size, mouseX, mouseY, entity, 15728880); } - public static void drawEntity(int x, int y, int size, float mouseX, float mouseY, LivingEntity entity, int light) { - float f = (float)Math.atan((double)(mouseX / 40.0F)); - float g = (float)Math.atan((double)(mouseY / 40.0F)); - RenderSystem.pushMatrix(); - RenderSystem.translatef((float)x, (float)y, 1050.0F); - RenderSystem.scalef(1.0F, 1.0F, -1.0F); - MatrixStack matrixStack = new MatrixStack(); - matrixStack.translate(0.0D, 0.0D, 1000.0D); - matrixStack.scale((float)size, (float)size, (float)size); - Quaternion quaternion = Vector3f.POSITIVE_Z.getDegreesQuaternion(180.0F); - Quaternion quaternion2 = Vector3f.POSITIVE_X.getDegreesQuaternion(g * 20.0F); - quaternion.hamiltonProduct(quaternion2); - matrixStack.multiply(quaternion); - float h = entity.bodyYaw; - float i = entity.yaw; - float j = entity.pitch; - float k = entity.prevHeadYaw; - float l = entity.headYaw; - entity.bodyYaw = 180.0F + f * 20.0F; - entity.yaw = 180.0F + f * 40.0F; - entity.pitch = -g * 20.0F; - entity.headYaw = entity.yaw; - entity.prevHeadYaw = entity.yaw; - EntityRenderDispatcher entityRenderDispatcher = MinecraftClient.getInstance().getEntityRenderDispatcher(); - quaternion2.conjugate(); - entityRenderDispatcher.setRotation(quaternion2); - entityRenderDispatcher.setRenderShadows(false); - VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); - entityRenderDispatcher.render(entity, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F, matrixStack, immediate, light); - immediate.draw(); - entityRenderDispatcher.setRenderShadows(true); - entity.bodyYaw = h; - entity.yaw = i; - entity.pitch = j; - entity.prevHeadYaw = k; - entity.headYaw = l; - RenderSystem.popMatrix(); - } +// public static void drawEntity(int x, int y, int size, float mouseX, float mouseY, LivingEntity entity, int light) { +// float f = (float)Math.atan((double)(mouseX / 40.0F)); +// float g = (float)Math.atan((double)(mouseY / 40.0F)); +// RenderSystem.pushMatrix(); +// RenderSystem.translatef((float)x, (float)y, 1050.0F); +// RenderSystem.scalef(1.0F, 1.0F, -1.0F); +// MatrixStack matrixStack = new MatrixStack(); +// matrixStack.translate(0.0D, 0.0D, 1000.0D); +// matrixStack.scale((float)size, (float)size, (float)size); +// Quaternion quaternion = Vector3f.POSITIVE_Z.getDegreesQuaternion(180.0F); +// Quaternion quaternion2 = Vector3f.POSITIVE_X.getDegreesQuaternion(g * 20.0F); +// quaternion.hamiltonProduct(quaternion2); +// matrixStack.multiply(quaternion); +// float h = entity.bodyYaw; +// float i = entity.yaw; +// float j = entity.pitch; +// float k = entity.prevHeadYaw; +// float l = entity.headYaw; +// entity.bodyYaw = 180.0F + f * 20.0F; +// entity.yaw = 180.0F + f * 40.0F; +// entity.pitch = -g * 20.0F; +// entity.headYaw = entity.yaw; +// entity.prevHeadYaw = entity.yaw; +// EntityRenderDispatcher entityRenderDispatcher = MinecraftClient.getInstance().getEntityRenderDispatcher(); +// quaternion2.conjugate(); +// entityRenderDispatcher.setRotation(quaternion2); +// entityRenderDispatcher.setRenderShadows(false); +// VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); +// entityRenderDispatcher.render(entity, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F, matrixStack, immediate, light); +// immediate.draw(); +// entityRenderDispatcher.setRenderShadows(true); +// entity.bodyYaw = h; +// entity.yaw = i; +// entity.pitch = j; +// entity.prevHeadYaw = k; +// entity.headYaw = l; +// RenderSystem.popMatrix(); +// } } diff --git a/src/main/java/draylar/identity/screen/widget/EntityWidget.java b/src/main/java/draylar/identity/screen/widget/EntityWidget.java index ab82c3b..7026b14 100644 --- a/src/main/java/draylar/identity/screen/widget/EntityWidget.java +++ b/src/main/java/draylar/identity/screen/widget/EntityWidget.java @@ -1,15 +1,17 @@ package draylar.identity.screen.widget; +import com.mojang.blaze3d.systems.RenderSystem; import draylar.identity.Identity; import draylar.identity.network.ClientNetworking; import draylar.identity.screen.IdentityScreen; -import draylar.identity.screen.ScreenUtils; import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.AbstractPressableButtonWidget; +import net.minecraft.client.gui.screen.ingame.InventoryScreen; +import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; +import net.minecraft.client.gui.widget.PressableWidget; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; import net.minecraft.network.PacketByteBuf; @@ -17,10 +19,9 @@ import net.minecraft.text.TranslatableText; import net.minecraft.util.registry.Registry; -import java.util.Arrays; import java.util.Collections; -public class EntityWidget extends AbstractPressableButtonWidget { +public class EntityWidget extends PressableWidget { private final LivingEntity entity; private final int size; @@ -80,17 +81,18 @@ else if (button == 1) { public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { super.render(matrices, mouseX, mouseY, delta); - ScreenUtils.drawEntity(x + this.getWidth() / 2, (int) (y + this.getHeight() * .75f), size, -10, -10, entity, 15728880); +// ScreenUtils.drawEntity(x + this.getWidth() / 2, (int) (y + this.getHeight() * .75f), size, -10, -10, entity, 15728880); + InventoryScreen.drawEntity(x + this.getWidth() / 2, (int) (y + this.getHeight() * .75f), size, -10, -10, entity); // Render selected outline if(active) { - MinecraftClient.getInstance().getTextureManager().bindTexture(Identity.id("textures/gui/selected.png")); + RenderSystem.setShaderTexture(0, Identity.id("textures/gui/selected.png")); DrawableHelper.drawTexture(matrices, x, y, getWidth(), getHeight(), 0, 0, 48, 32, 48, 32); } // Render favorite star if(starred) { - MinecraftClient.getInstance().getTextureManager().bindTexture(Identity.id("textures/gui/star.png")); + RenderSystem.setShaderTexture(0, Identity.id("textures/gui/star.png")); DrawableHelper.drawTexture(matrices, x, y, 0, 0, 15, 15, 15, 15); } @@ -128,4 +130,9 @@ public void renderToolTip(MatrixStack matrices, int mouseX, int mouseY) { currentScreen.renderTooltip(matrices, Collections.singletonList(new TranslatableText(entity.getType().getTranslationKey())), mouseX, mouseY); } } + + @Override + public void appendNarrations(NarrationMessageBuilder builder) { + + } } diff --git a/src/main/java/draylar/identity/screen/widget/PlayerWidget.java b/src/main/java/draylar/identity/screen/widget/PlayerWidget.java index de59677..0d8d73d 100644 --- a/src/main/java/draylar/identity/screen/widget/PlayerWidget.java +++ b/src/main/java/draylar/identity/screen/widget/PlayerWidget.java @@ -1,5 +1,6 @@ package draylar.identity.screen.widget; +import com.mojang.blaze3d.systems.RenderSystem; import draylar.identity.Identity; import draylar.identity.network.ClientNetworking; import draylar.identity.screen.IdentityScreen; @@ -7,14 +8,15 @@ import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.gui.widget.AbstractPressableButtonWidget; +import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; +import net.minecraft.client.gui.widget.PressableWidget; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.EntityType; import net.minecraft.network.PacketByteBuf; import net.minecraft.text.LiteralText; import net.minecraft.util.registry.Registry; -public class PlayerWidget extends AbstractPressableButtonWidget { +public class PlayerWidget extends PressableWidget { private final IdentityScreen parent; @@ -35,7 +37,7 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { // } // - MinecraftClient.getInstance().getTextureManager().bindTexture(Identity.id("textures/gui/player.png")); + RenderSystem.setShaderTexture(0, Identity.id("textures/gui/player.png")); DrawableHelper.drawTexture(matrices, x, y, 16, 16, 0, 0, 8, 8, 8, 8); super.render(matrices, mouseX, mouseY, delta); @@ -53,4 +55,9 @@ public void onPress() { ClientSidePacketRegistry.INSTANCE.sendToServer(ClientNetworking.IDENTITY_REQUEST, packet); parent.disableAll(); } + + @Override + public void appendNarrations(NarrationMessageBuilder builder) { + + } } diff --git a/src/main/resources/identity.accesswidener b/src/main/resources/identity.accesswidener index 8e8656b..f65c7d9 100644 --- a/src/main/resources/identity.accesswidener +++ b/src/main/resources/identity.accesswidener @@ -5,13 +5,15 @@ accessible method net/minecraft/entity/LivingEntity getEyeHeight (Lnet/minecraft extendable method net/minecraft/entity/Entity getStandingEyeHeight ()F accessible method net/minecraft/client/render/entity/LivingEntityRenderer getRenderLayer (Lnet/minecraft/entity/LivingEntity;ZZZ)Lnet/minecraft/client/render/RenderLayer; -accessible field net/minecraft/client/render/entity/model/QuadrupedEntityModel frontRightLeg Lnet/minecraft/client/model/ModelPart; +accessible field net/minecraft/client/render/entity/model/QuadrupedEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart; accessible field net/minecraft/client/render/entity/model/LlamaEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart; accessible field net/minecraft/client/render/entity/model/BlazeEntityModel rods [Lnet/minecraft/client/model/ModelPart; accessible field net/minecraft/client/render/entity/model/OcelotEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart; accessible field net/minecraft/client/render/entity/model/SpiderEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart; -accessible field net/minecraft/client/render/entity/model/IllagerEntityModel rightAttackingArm Lnet/minecraft/client/model/ModelPart; +accessible field net/minecraft/client/render/entity/model/IllagerEntityModel rightArm Lnet/minecraft/client/model/ModelPart; accessible field net/minecraft/client/render/entity/model/RavagerEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart; accessible field net/minecraft/client/render/entity/model/SquidEntityModel tentacles [Lnet/minecraft/client/model/ModelPart; -accessible field net/minecraft/entity/player/PlayerAbilities flySpeed F \ No newline at end of file +accessible field net/minecraft/entity/player/PlayerAbilities flySpeed F + +extendable method net/minecraft/client/gui/screen/Screen init (Lnet/minecraft/client/MinecraftClient;II)V \ No newline at end of file diff --git a/src/main/resources/identity.mixins.json b/src/main/resources/identity.mixins.json index 7e868e9..395eb4f 100644 --- a/src/main/resources/identity.mixins.json +++ b/src/main/resources/identity.mixins.json @@ -23,6 +23,7 @@ "PlayerManagerMixin", "PlayerSwimmingMixin", "RavagerEntityMixin", + "ScreenAccessor", "ServerPlayerEntityMixin", "SweetBerryBushBlockMixin", "TrackTargetGoalMixin", @@ -32,13 +33,13 @@ "WolfEntityMixin" ], "client": [ - "PlayerEntityRendererMixin", - "ShadowMixin", - "StrayOverlayMixin", "BipedEntityModelMixin", "DrownedOverlayMixin", "EntityShadowAccessor", - "InGameHudMixin" + "InGameHudMixin", + "PlayerEntityRendererMixin", + "ShadowMixin", + "StrayOverlayMixin" ], "injectors": { "defaultRequire": 1