Phase 0 : compile SUCCESS (464 -> 0 errors)
Core data model du rig EF extractible compile désormais cleanly.
Changements clé :
1. AccessTransformer wiring (-80 errors)
- Copie EF accesstransformer.cfg dans resources/META-INF/
- Uncomment accessTransformer = file(...) dans build.gradle
- Débloque l'héritage des package-private RenderType.CompositeState +
RenderType.CompositeRenderType + RenderType.OutlineProperty nécessaires
à TiedUpRenderTypes.
2. Stubs compat rendering Phase 2
- PatchedEntityRenderer<E,T,M,R> : type param 4 pour PrepareModelEvent
- RenderItemBase : type marker pour PatchedRenderersEvent.RegisterItemRenderer
- LayerUtil + LayerProvider : interface fonctionnelle 5-params pour RegisterResourceLayersEvent
- PlayerPatch<T extends Player> : extends LivingEntityPatch
- ToolHolderArmature interface : leftTool/rightTool/backToolJoint()
3. Stubs compat combat Phase 2+
- AttackResult + ResultType enum : utilisé comme type pour StateFactor ATTACK_RESULT
- TrailInfo record : stubbé avec playable=false → particle trail jamais émis
- AttackAnimation.Phase.hand = InteractionHand.MAIN_HAND
- AttackAnimation.JointColliderPair : stub pour instanceof check
- AttackAnimation.getPhaseByTime(float) : retourne Phase neutre
- ActionAnimation.correctRootJoint() : no-op Phase 0
- ActionAnimation.BEGINNING_LOCATION + INITIAL_LOOK_VEC_DOT re-exposés comme AnimationVariables
4. Physics types alignés
- InverseKinematicsProvider extends SimulationProvider<...>
- InverseKinematicsSimulator implements PhysicsSimulator<Joint, ...>
- InverseKinematicsObject implements SimulationObject<...>
- InverseKinematicsBuilder extends SimulationObject.SimulationObjectBuilder
- ik.bake() signature : (Object, Object, boolean, boolean) conforme StaticAnimation usage
5. Mesh/compute stubs
- ComputeShaderSetup.TOTAL_POSES + TOTAL_NORMALS : OpenMatrix4f[MAX_JOINTS] pool
- ComputeShaderSetup.MeshPartBuffer inner class + destroyBuffers()
- ComputeShaderProvider.supportComputeShader() = false
- VanillaModelTransformer.VanillaMeshPartDefinition record minimal
- HumanoidMesh.getHumanoidArmorModel() : return null (armor rendering Phase 2)
6. Fixes typage / API
- TiedUpRenderTypes.prefix("x").toString() x15 : ResourceLocation -> String
- AnimationManager Logger : log4j -> slf4j
- TiedUpRigConstants.logAndStacktraceIfDevSide 4-arg overload + Throwable instead of RuntimeException
- LivingEntityPatch.getReach(InteractionHand) overload
- StaticAnimation(boolean, String, AssetAccessor) 3-arg overload
Result : compileJava -> BUILD SUCCESSFUL
Prochain jalon : runClient + verify rig se charge sans crash.
This commit is contained in:
@@ -66,7 +66,7 @@ minecraft {
|
||||
// However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
|
||||
// This default location is a best practice to automatically put the file in the right place in the final jar.
|
||||
// See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information.
|
||||
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
|
||||
// Default run configurations.
|
||||
// These can be tweaked, removed, or duplicated as needed.
|
||||
|
||||
@@ -99,16 +99,28 @@ public final class TiedUpRigConstants {
|
||||
|
||||
/**
|
||||
* En dev env : log via le consumer + throw l'exception.
|
||||
* En prod : log seulement. Équivalent EF {@code TiedUpRigConstants.logAndStacktraceIfDevSide}.
|
||||
* En prod : log seulement. Équivalent EF {@code EpicFightMod.logAndStacktraceIfDevSide}.
|
||||
*/
|
||||
public static <E extends RuntimeException> void logAndStacktraceIfDevSide(
|
||||
public static void logAndStacktraceIfDevSide(
|
||||
java.util.function.BiConsumer<Logger, String> logAction,
|
||||
String message,
|
||||
java.util.function.Function<String, E> exceptionFactory
|
||||
java.util.function.Function<String, ? extends Throwable> exceptionFactory
|
||||
) {
|
||||
logAndStacktraceIfDevSide(logAction, message, exceptionFactory, message);
|
||||
}
|
||||
|
||||
public static void logAndStacktraceIfDevSide(
|
||||
java.util.function.BiConsumer<Logger, String> logAction,
|
||||
String message,
|
||||
java.util.function.Function<String, ? extends Throwable> exceptionFactory,
|
||||
String stackTraceMessage
|
||||
) {
|
||||
logAction.accept(LOGGER, message);
|
||||
if (IS_DEV_ENV) {
|
||||
throw exceptionFactory.apply(message);
|
||||
Throwable t = exceptionFactory.apply(stackTraceMessage);
|
||||
if (t instanceof RuntimeException re) throw re;
|
||||
if (t instanceof Error err) throw err;
|
||||
throw new RuntimeException(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.anim.client.property;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
import net.minecraft.core.particles.SimpleParticleType;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — combat weapon particle trail. Pas utilisé dans TiedUp
|
||||
* (bondage, pas d'armes actives), mais on garde l'API typée pour JSON compat.
|
||||
* {@code deserialize} retourne toujours un trail neutre non-playable, donc
|
||||
* le block dans StaticAnimation est court-circuité (voir {@link #playable()}).
|
||||
*/
|
||||
public record TrailInfo(String joint, SimpleParticleType particle, boolean playable) {
|
||||
public static TrailInfo deserialize(JsonElement element) {
|
||||
return new TrailInfo("", null, false);
|
||||
}
|
||||
|
||||
public Vec3 start() { return Vec3.ZERO; }
|
||||
public Vec3 end() { return Vec3.ZERO; }
|
||||
public float startTime() { return 0.0F; }
|
||||
public float endTime() { return 0.0F; }
|
||||
}
|
||||
@@ -6,6 +6,10 @@
|
||||
|
||||
package com.tiedup.remake.rig.anim.types;
|
||||
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
import com.tiedup.remake.rig.anim.AnimationVariables;
|
||||
import com.tiedup.remake.rig.anim.AnimationVariables.IndependentAnimationVariableKey;
|
||||
import com.tiedup.remake.rig.anim.property.AnimationProperty.ActionAnimationProperty;
|
||||
import com.tiedup.remake.rig.armature.Armature;
|
||||
import com.tiedup.remake.rig.asset.AssetAccessor;
|
||||
@@ -19,6 +23,13 @@ import com.tiedup.remake.rig.asset.AssetAccessor;
|
||||
*/
|
||||
public class ActionAnimation extends MainFrameAnimation {
|
||||
|
||||
// Variables indépendantes propagées à MoveCoordFunctions (position de départ
|
||||
// en coord monde + produit scalaire lookVec initial pour lerp anim→world).
|
||||
public static final IndependentAnimationVariableKey<Vec3> BEGINNING_LOCATION =
|
||||
AnimationVariables.independent((animator) -> animator.getEntityPatch().getOriginal().position(), true);
|
||||
public static final IndependentAnimationVariableKey<Float> INITIAL_LOOK_VEC_DOT =
|
||||
AnimationVariables.independent((animator) -> 1.0F, true);
|
||||
|
||||
public ActionAnimation(float transitionTime, boolean isRepeat, String registryName, AssetAccessor<? extends Armature> armature) {
|
||||
super(transitionTime, isRepeat, registryName, armature);
|
||||
}
|
||||
@@ -34,4 +45,18 @@ public class ActionAnimation extends MainFrameAnimation {
|
||||
public <V> ActionAnimation addProperty(ActionAnimationProperty<V> property, V value) {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stub — LinkAnimation.modifyPose appelle ça pour aligner la root joint
|
||||
* en espace monde pendant la transition. No-op en TiedUp.
|
||||
*/
|
||||
public void correctRootJoint(
|
||||
com.tiedup.remake.rig.anim.types.LinkAnimation linkAnimation,
|
||||
com.tiedup.remake.rig.anim.Pose pose,
|
||||
com.tiedup.remake.rig.patch.LivingEntityPatch<?> entitypatch,
|
||||
float time,
|
||||
float partialTicks
|
||||
) {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ package com.tiedup.remake.rig.anim.types;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.world.InteractionHand;
|
||||
|
||||
import com.tiedup.remake.rig.armature.Armature;
|
||||
import com.tiedup.remake.rig.asset.AssetAccessor;
|
||||
|
||||
@@ -44,13 +46,34 @@ public class AttackAnimation extends ActionAnimation {
|
||||
super(isRepeat, registryName, armature);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stub — MoveCoordFunctions appelle ça pour calculer la reach mid-anim.
|
||||
* On retourne toujours une Phase neutre (mainHand, pas de colliders),
|
||||
* donc le reach retombe sur {@code entitypatch.getReach(MAIN_HAND)}.
|
||||
*/
|
||||
public Phase getPhaseByTime(float elapsedTime) {
|
||||
return new Phase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Phase d'attaque. Stub pour satisfaire {@code phase.getColliders()}
|
||||
* en JsonAssetLoader.
|
||||
* en JsonAssetLoader + {@code phase.hand} en MoveCoordFunctions.
|
||||
*/
|
||||
public static class Phase {
|
||||
public Object[] getColliders() {
|
||||
return new Object[0];
|
||||
public final InteractionHand hand = InteractionHand.MAIN_HAND;
|
||||
|
||||
public JointColliderPair[] getColliders() {
|
||||
return new JointColliderPair[0];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stub — (Joint, Collider) pair pour les hitboxes combat. Non utilisé
|
||||
* en TiedUp, juste un placeholder typé pour que JsonAssetLoader:592 compile.
|
||||
*/
|
||||
public static class JointColliderPair {
|
||||
public com.tiedup.remake.rig.armature.Joint getFirst() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,6 +116,11 @@ public class StaticAnimation extends DynamicAnimation implements InverseKinemati
|
||||
this.filehash = getFileHash(this.resourceLocation);
|
||||
}
|
||||
|
||||
/* Resourcepack animations — transitionTime par défaut */
|
||||
public StaticAnimation(boolean isRepeat, String path, AssetAccessor<? extends Armature> armature) {
|
||||
this(TiedUpRigConstants.GENERAL_ANIMATION_TRANSITION_TIME, isRepeat, path, armature);
|
||||
}
|
||||
|
||||
/* Resourcepack animations */
|
||||
public StaticAnimation(float transitionTime, boolean isRepeat, String path, AssetAccessor<? extends Armature> armature) {
|
||||
super(transitionTime, isRepeat);
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.armature.types;
|
||||
|
||||
import com.tiedup.remake.rig.armature.Joint;
|
||||
|
||||
/**
|
||||
* Interface pour armatures portant un outil (main gauche/droite + dos).
|
||||
* TiedUp gardera cette convention pour maintenir la compat avec les JSON EF
|
||||
* (rig équivalent : Tool_R, Tool_L, Tool_Back). Dans les faits, dans un
|
||||
* contexte bondage, "outil" = menottes, laisse, cage, etc.
|
||||
*/
|
||||
public interface ToolHolderArmature {
|
||||
Joint leftToolJoint();
|
||||
Joint rightToolJoint();
|
||||
Joint backToolJoint();
|
||||
}
|
||||
@@ -415,10 +415,11 @@ public class ClothSimulator extends AbstractSimulator<ResourceLocation, ClothObj
|
||||
this.drawParts(poseStack, bufferBuilder, drawingFunction, packedLight, r, g, b, a, overlay);
|
||||
}
|
||||
|
||||
// RIG : debug draw des colliders OBB strippé — OBBCollider stub minimal
|
||||
// sans logique de rendu (EF avait draw(PoseStack, BufferSource, int), strip
|
||||
// pour éviter de forker tout le pipeline RenderType combat).
|
||||
if (DRAW_MESH_COLLIDERS && this.clothColliders != null) {
|
||||
for (Pair<Function<ClothSimulatable, OpenMatrix4f>, ClothSimulator.ClothOBBCollider> entry : this.clothColliders) {
|
||||
entry.getSecond().draw(poseStack, Minecraft.getInstance().renderBuffers().bufferSource(), 0xFFFFFFFF);
|
||||
}
|
||||
// no-op Phase 0
|
||||
}
|
||||
|
||||
// Remove entity inverted world translation while keeping the scale
|
||||
|
||||
@@ -49,17 +49,9 @@ public class HumanoidMesh extends SkinnedMesh {
|
||||
}
|
||||
|
||||
public AssetAccessor<? extends SkinnedMesh> getHumanoidArmorModel(EquipmentSlot slot) {
|
||||
switch (slot) {
|
||||
case HEAD:
|
||||
return Meshes.HELMET;
|
||||
case CHEST:
|
||||
return Meshes.CHESTPLATE;
|
||||
case LEGS:
|
||||
return Meshes.LEGGINS;
|
||||
case FEET:
|
||||
return Meshes.BOOTS;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
// RIG : Meshes.{HELMET,CHESTPLATE,LEGGINS,BOOTS} strippés en Phase 0 (armor rendering
|
||||
// hors scope bondage V1). Re-implém Phase 2 si besoin de rendre armures vanilla
|
||||
// sur le rig — pour l'instant retour null = armor rendering off.
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.mesh.transformer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import net.minecraft.client.model.geom.ModelPart;
|
||||
|
||||
import com.tiedup.remake.rig.math.OpenMatrix4f;
|
||||
import com.tiedup.remake.rig.mesh.Mesh;
|
||||
import com.tiedup.remake.rig.mesh.MeshPartDefinition;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — le transformer complet EF (HumanoidModel → SkinnedMesh
|
||||
* runtime conversion) n'est pas porté : TiedUp utilise exclusivement GLB +
|
||||
* JSON EF pour la définition des meshes. Seule la record
|
||||
* {@link VanillaMeshPartDefinition} est conservée, car référencée par
|
||||
* {@code JsonAssetLoader} pour instancier les parts nommées.
|
||||
*
|
||||
* <p>Phase 2 : décider si on fork le transformer pour garder la compat runtime
|
||||
* avec les modèles vanilla (armor rendering), ou si on reroute vers GLB only.</p>
|
||||
*/
|
||||
public class VanillaModelTransformer {
|
||||
|
||||
public record VanillaMeshPartDefinition(
|
||||
String partName,
|
||||
Mesh.RenderProperties renderProperties,
|
||||
List<String> path,
|
||||
OpenMatrix4f invertedParentTransform,
|
||||
ModelPart root
|
||||
) implements MeshPartDefinition {
|
||||
|
||||
public static MeshPartDefinition of(String partName, Mesh.RenderProperties renderProperties) {
|
||||
return new VanillaMeshPartDefinition(partName, renderProperties, null, null, null);
|
||||
}
|
||||
|
||||
public static MeshPartDefinition of(String partName) {
|
||||
return new VanillaMeshPartDefinition(partName, null, null, null, null);
|
||||
}
|
||||
|
||||
public static MeshPartDefinition of(String partName, List<String> path, OpenMatrix4f invertedParentTransform, ModelPart root) {
|
||||
return new VanillaMeshPartDefinition(partName, null, path, invertedParentTransform, root);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Supplier<OpenMatrix4f> getModelPartAnimationProvider() {
|
||||
return () -> null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ package com.tiedup.remake.rig.patch;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
@@ -65,6 +66,10 @@ public abstract class LivingEntityPatch<T extends LivingEntity> extends EntityPa
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
public float getReach(InteractionHand hand) {
|
||||
return getReach();
|
||||
}
|
||||
|
||||
public float getYRot() {
|
||||
return this.original.getYRot();
|
||||
}
|
||||
|
||||
17
src/main/java/com/tiedup/remake/rig/patch/PlayerPatch.java
Normal file
17
src/main/java/com/tiedup/remake/rig/patch/PlayerPatch.java
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.patch;
|
||||
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — patch de capability attaché à un {@link Player}.
|
||||
* Re-implém complète Phase 2 (séparation ClientPlayerPatch / ServerPlayerPatch,
|
||||
* input handling, first-person, cam sync).
|
||||
*/
|
||||
public abstract class PlayerPatch<T extends Player> extends LivingEntityPatch<T> {
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
package com.tiedup.remake.rig.physics.ik;
|
||||
|
||||
import com.tiedup.remake.rig.physics.SimulationProvider;
|
||||
import com.tiedup.remake.rig.physics.ik.InverseKinematicsSimulator.InverseKinematicsBuilder;
|
||||
import com.tiedup.remake.rig.physics.ik.InverseKinematicsSimulator.InverseKinematicsObject;
|
||||
|
||||
@@ -19,13 +20,15 @@ import com.tiedup.remake.rig.physics.ik.InverseKinematicsSimulator.InverseKinema
|
||||
* Conservé comme interface vide pour que {@code StaticAnimation
|
||||
* implements InverseKinematicsProvider} compile.</p>
|
||||
*/
|
||||
public interface InverseKinematicsProvider {
|
||||
public interface InverseKinematicsProvider
|
||||
extends SimulationProvider<InverseKinematicsSimulatable, InverseKinematicsObject, InverseKinematicsBuilder, InverseKinematicsProvider> {
|
||||
|
||||
/**
|
||||
* Crée les données de simulation IK. Stub par défaut : no-op.
|
||||
* Surchargé dans les classes qui auraient réellement de l'IK (aucune
|
||||
* en TiedUp).
|
||||
*/
|
||||
@Override
|
||||
default InverseKinematicsObject createSimulationData(
|
||||
InverseKinematicsProvider provider,
|
||||
InverseKinematicsSimulatable simOwner,
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
|
||||
package com.tiedup.remake.rig.physics.ik;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.BooleanSupplier;
|
||||
|
||||
import com.tiedup.remake.rig.armature.Joint;
|
||||
import com.tiedup.remake.rig.physics.PhysicsSimulator;
|
||||
import com.tiedup.remake.rig.physics.SimulationObject;
|
||||
|
||||
/**
|
||||
* RIG stub. Upstream EF : simulateur d'inverse kinematics (solveur CCD
|
||||
* ou FABRIK) utilisé pour attacher des membres à des points cibles
|
||||
@@ -15,15 +22,24 @@ package com.tiedup.remake.rig.physics.ik;
|
||||
* AnimationProperty compilent. Les nested types sont des stubs sans
|
||||
* logique.</p>
|
||||
*/
|
||||
public class InverseKinematicsSimulator {
|
||||
public class InverseKinematicsSimulator implements PhysicsSimulator<Joint, InverseKinematicsSimulator.InverseKinematicsBuilder, InverseKinematicsProvider, InverseKinematicsSimulatable, InverseKinematicsSimulator.InverseKinematicsObject> {
|
||||
|
||||
public static class InverseKinematicsObject {
|
||||
@Override public void tick(InverseKinematicsSimulatable object) {}
|
||||
@Override public boolean isRunning(Joint key) { return false; }
|
||||
@Override public void runUntil(Joint key, InverseKinematicsProvider provider, InverseKinematicsBuilder builder, BooleanSupplier when) {}
|
||||
@Override public void runWhen(Joint key, InverseKinematicsProvider provider, InverseKinematicsBuilder builder, BooleanSupplier when) {}
|
||||
@Override public void restart(Joint key) {}
|
||||
@Override public void stop(Joint key) {}
|
||||
@Override public Optional<InverseKinematicsObject> getRunningObject(Joint key) { return Optional.empty(); }
|
||||
|
||||
|
||||
public static class InverseKinematicsObject implements SimulationObject<InverseKinematicsBuilder, InverseKinematicsProvider, InverseKinematicsSimulatable> {
|
||||
public InverseKinematicsObject(InverseKinematicsBuilder builder) {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
public static class InverseKinematicsBuilder {
|
||||
public static class InverseKinematicsBuilder extends SimulationObject.SimulationObjectBuilder {
|
||||
// no-op stub
|
||||
}
|
||||
|
||||
@@ -35,8 +51,8 @@ public class InverseKinematicsSimulator {
|
||||
public BakedInverseKinematicsDefinition bake(
|
||||
Object armature,
|
||||
Object jointTransforms,
|
||||
float correctY,
|
||||
float correctZ) {
|
||||
boolean correctY,
|
||||
boolean correctZ) {
|
||||
return new BakedInverseKinematicsDefinition();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.render;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — renderer EF substituant {@code EntityRenderer} vanilla
|
||||
* pour les entités riggées. Implémentation complète Phase 2 (pipeline :
|
||||
* pose → armature → skinning → VertexConsumer).
|
||||
*/
|
||||
public abstract class PatchedEntityRenderer<E, T, M, R> {
|
||||
}
|
||||
@@ -48,7 +48,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
private static final BiFunction<ResourceLocation, RenderStateShard.CullStateShard, RenderType> TRIANGULATED_OUTLINE =
|
||||
Util.memoize((texLocation, cullStateShard) -> {
|
||||
return RenderType.create(
|
||||
TiedUpRigConstants.prefix("outline"),
|
||||
TiedUpRigConstants.prefix("outline").toString(),
|
||||
DefaultVertexFormat.POSITION_COLOR_TEX,
|
||||
VertexFormat.Mode.TRIANGLES,
|
||||
256,
|
||||
@@ -288,7 +288,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final RenderType ENTITY_UI_COLORED =
|
||||
create(
|
||||
TiedUpRigConstants.prefix("ui_color")
|
||||
TiedUpRigConstants.prefix("ui_color").toString()
|
||||
, DefaultVertexFormat.POSITION_COLOR
|
||||
, VertexFormat.Mode.QUADS
|
||||
, 256
|
||||
@@ -304,7 +304,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final Function<ResourceLocation, RenderType> ENTITY_UI_TEXTURE = Util.memoize(
|
||||
(textureLocation) -> create(
|
||||
TiedUpRigConstants.prefix("ui_texture")
|
||||
TiedUpRigConstants.prefix("ui_texture").toString()
|
||||
, DefaultVertexFormat.POSITION_TEX
|
||||
, VertexFormat.Mode.QUADS
|
||||
, 256
|
||||
@@ -321,7 +321,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
);
|
||||
|
||||
private static final RenderType OBB = create(
|
||||
TiedUpRigConstants.prefix("debug_collider")
|
||||
TiedUpRigConstants.prefix("debug_collider").toString()
|
||||
, DefaultVertexFormat.POSITION_COLOR_NORMAL
|
||||
, VertexFormat.Mode.LINE_STRIP
|
||||
, 256
|
||||
@@ -339,7 +339,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
);
|
||||
|
||||
private static final RenderType DEBUG_QUADS = create(
|
||||
TiedUpRigConstants.prefix("debug_quad")
|
||||
TiedUpRigConstants.prefix("debug_quad").toString()
|
||||
, DefaultVertexFormat.POSITION_COLOR
|
||||
, VertexFormat.Mode.QUADS
|
||||
, 256
|
||||
@@ -355,7 +355,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
);
|
||||
|
||||
private static final RenderType GUI_TRIANGLE = create(
|
||||
TiedUpRigConstants.prefix("gui_triangle")
|
||||
TiedUpRigConstants.prefix("gui_triangle").toString()
|
||||
, DefaultVertexFormat.POSITION_COLOR
|
||||
, VertexFormat.Mode.TRIANGLES
|
||||
, 256
|
||||
@@ -370,7 +370,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final Function<ResourceLocation, RenderType> OVERLAY_MODEL = Util.memoize(texLocation -> {
|
||||
return create(
|
||||
TiedUpRigConstants.prefix("overlay_model"),
|
||||
TiedUpRigConstants.prefix("overlay_model").toString(),
|
||||
DefaultVertexFormat.NEW_ENTITY,
|
||||
VertexFormat.Mode.TRIANGLES,
|
||||
256,
|
||||
@@ -391,7 +391,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final RenderType ENTITY_AFTERIMAGE_WHITE =
|
||||
create(
|
||||
TiedUpRigConstants.prefix("entity_afterimage"),
|
||||
TiedUpRigConstants.prefix("entity_afterimage").toString(),
|
||||
DefaultVertexFormat.PARTICLE,
|
||||
VertexFormat.Mode.TRIANGLES,
|
||||
256,
|
||||
@@ -410,7 +410,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final RenderType ITEM_AFTERIMAGE_WHITE =
|
||||
create(
|
||||
TiedUpRigConstants.prefix("item_afterimage"),
|
||||
TiedUpRigConstants.prefix("item_afterimage").toString(),
|
||||
DefaultVertexFormat.PARTICLE,
|
||||
VertexFormat.Mode.QUADS,
|
||||
256,
|
||||
@@ -429,7 +429,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final Function<ResourceLocation, RenderType> ENTITY_PARTICLE = Util.memoize(texLocation -> {
|
||||
return create(
|
||||
TiedUpRigConstants.prefix("entity_particle"),
|
||||
TiedUpRigConstants.prefix("entity_particle").toString(),
|
||||
DefaultVertexFormat.NEW_ENTITY,
|
||||
VertexFormat.Mode.TRIANGLES,
|
||||
256,
|
||||
@@ -449,7 +449,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final RenderType ITEM_PARTICLE =
|
||||
create(
|
||||
TiedUpRigConstants.prefix("item_particle"),
|
||||
TiedUpRigConstants.prefix("item_particle").toString(),
|
||||
DefaultVertexFormat.NEW_ENTITY,
|
||||
VertexFormat.Mode.QUADS,
|
||||
256,
|
||||
@@ -468,7 +468,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final Function<ResourceLocation, RenderType> ENTITY_PARTICLE_STENCIL = Util.memoize(texLocation -> {
|
||||
return create(
|
||||
TiedUpRigConstants.prefix("entity_particle_stencil"),
|
||||
TiedUpRigConstants.prefix("entity_particle_stencil").toString(),
|
||||
DefaultVertexFormat.POSITION_TEX,
|
||||
VertexFormat.Mode.TRIANGLES,
|
||||
256,
|
||||
@@ -484,7 +484,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final RenderType ITEM_PARTICLE_STENCIL =
|
||||
create(
|
||||
TiedUpRigConstants.prefix("item_particle_stencil"),
|
||||
TiedUpRigConstants.prefix("item_particle_stencil").toString(),
|
||||
DefaultVertexFormat.POSITION_TEX,
|
||||
VertexFormat.Mode.QUADS,
|
||||
256,
|
||||
@@ -499,7 +499,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
|
||||
private static final RenderType.CompositeRenderType BLOCK_HIGHLIGHT =
|
||||
create(
|
||||
TiedUpRigConstants.prefix("block_highlight"),
|
||||
TiedUpRigConstants.prefix("block_highlight").toString(),
|
||||
DefaultVertexFormat.BLOCK,
|
||||
VertexFormat.Mode.QUADS,
|
||||
256,
|
||||
@@ -627,7 +627,7 @@ public final class TiedUpRenderTypes extends RenderType {
|
||||
CompositeRenderType glintRenderType = WORLD_RENDERTYPES_COLORED_GLINT.computeIfAbsent(
|
||||
owner,
|
||||
k -> create(
|
||||
TiedUpRigConstants.prefix("colored_glint"),
|
||||
TiedUpRigConstants.prefix("colored_glint").toString(),
|
||||
DefaultVertexFormat.POSITION_TEX,
|
||||
VertexFormat.Mode.TRIANGLES,
|
||||
256,
|
||||
|
||||
@@ -20,6 +20,11 @@ public final class ComputeShaderProvider {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Stub : compute shader jamais supporté en Phase 0 → CPU skinning uniquement. */
|
||||
public static boolean supportComputeShader() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Stub no-op pour Iris init (référence pour IRISCompat éventuel). */
|
||||
public static void initIris() {
|
||||
// no-op Phase 0
|
||||
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.client.renderer.RenderType;
|
||||
import com.tiedup.remake.rig.mesh.Mesh;
|
||||
import com.tiedup.remake.rig.armature.Armature;
|
||||
import com.tiedup.remake.rig.math.OpenMatrix4f;
|
||||
import com.tiedup.remake.rig.TiedUpRigConstants;
|
||||
|
||||
/**
|
||||
* RIG stub. Upstream EF : ComputeShaderSetup = binding OpenGL 4.3+ compute
|
||||
@@ -25,6 +26,28 @@ import com.tiedup.remake.rig.math.OpenMatrix4f;
|
||||
*/
|
||||
public abstract class ComputeShaderSetup {
|
||||
|
||||
/** Pool de matrices réutilisées par SkinnedMesh pour le CPU skinning. */
|
||||
public static final OpenMatrix4f[] TOTAL_POSES = new OpenMatrix4f[TiedUpRigConstants.MAX_JOINTS];
|
||||
public static final OpenMatrix4f[] TOTAL_NORMALS = new OpenMatrix4f[TiedUpRigConstants.MAX_JOINTS];
|
||||
|
||||
static {
|
||||
for (int i = 0; i < TiedUpRigConstants.MAX_JOINTS; i++) {
|
||||
TOTAL_POSES[i] = new OpenMatrix4f();
|
||||
TOTAL_NORMALS[i] = new OpenMatrix4f();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stub inner class — utilisé par {@code SkinnedMesh.SkinnedMeshPart.partVBO}.
|
||||
* Le CPU path ne crée jamais d'instance, ne pointe que le type.
|
||||
*/
|
||||
public static class MeshPartBuffer {
|
||||
public void destroyBuffers() {}
|
||||
}
|
||||
|
||||
/** Libération des buffers VBO (GPU path). No-op sur le stub. */
|
||||
public void destroyBuffers() {}
|
||||
|
||||
/** No-op stub : le chemin GPU compute n'est jamais emprunté. */
|
||||
public void drawWithShader(
|
||||
Object mesh,
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.render.item;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — renderer pour les items (EF : weapons avec trail,
|
||||
* tools). TiedUp : re-implém Phase 3 pour menottes/laisse/cage rendues
|
||||
* attachées aux joints Tool_R/Tool_L via ItemStack injection.
|
||||
*/
|
||||
public abstract class RenderItemBase {
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.render.layer;
|
||||
|
||||
import net.minecraft.client.model.EntityModel;
|
||||
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
|
||||
import com.tiedup.remake.rig.mesh.SkinnedMesh;
|
||||
import com.tiedup.remake.rig.patch.LivingEntityPatch;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — registry de layers additionnels (armor, glow, cape...)
|
||||
* pour renderers EF. Implém complète Phase 2.
|
||||
*/
|
||||
public class LayerUtil {
|
||||
|
||||
@FunctionalInterface
|
||||
public interface LayerProvider<
|
||||
E extends LivingEntity,
|
||||
T extends LivingEntityPatch<E>,
|
||||
M extends EntityModel<E>,
|
||||
R extends LivingEntityRenderer<E, M>,
|
||||
AM extends SkinnedMesh
|
||||
> {
|
||||
void addLayer(R renderer);
|
||||
}
|
||||
}
|
||||
42
src/main/java/com/tiedup/remake/rig/util/AttackResult.java
Normal file
42
src/main/java/com/tiedup/remake/rig/util/AttackResult.java
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
|
||||
* by the Epic Fight Team, licensed under GPLv3.
|
||||
* Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
|
||||
*/
|
||||
|
||||
package com.tiedup.remake.rig.util;
|
||||
|
||||
/**
|
||||
* Stub RIG Phase 0 — encodage résultat d'attaque combat EF. Utilisé uniquement
|
||||
* comme type pour {@code ATTACK_RESULT} StateFactor côté EntityState. Pas de
|
||||
* logique combat dans TiedUp — logique porté Phase 2 si besoin hitboxes menottes.
|
||||
*/
|
||||
public class AttackResult {
|
||||
public final ResultType resultType;
|
||||
public final float damage;
|
||||
|
||||
public AttackResult(ResultType resultType, float damage) {
|
||||
this.resultType = resultType;
|
||||
this.damage = damage;
|
||||
}
|
||||
|
||||
public static AttackResult success(float damage) { return new AttackResult(ResultType.SUCCESS, damage); }
|
||||
public static AttackResult blocked(float damage) { return new AttackResult(ResultType.BLOCKED, damage); }
|
||||
public static AttackResult missed(float damage) { return new AttackResult(ResultType.MISSED, damage); }
|
||||
public static AttackResult of(ResultType resultType, float damage) { return new AttackResult(resultType, damage); }
|
||||
|
||||
public static enum ResultType {
|
||||
SUCCESS(true, true), MISSED(false, false), BLOCKED(false, true);
|
||||
|
||||
boolean dealtDamage;
|
||||
boolean shouldCount;
|
||||
|
||||
ResultType(boolean dealtDamage, boolean countAsHitEntity) {
|
||||
this.dealtDamage = dealtDamage;
|
||||
this.shouldCount = countAsHitEntity;
|
||||
}
|
||||
|
||||
public boolean dealtDamage() { return this.dealtDamage; }
|
||||
public boolean shouldCount() { return this.shouldCount; }
|
||||
}
|
||||
}
|
||||
127
src/main/resources/META-INF/accesstransformer.cfg
Normal file
127
src/main/resources/META-INF/accesstransformer.cfg
Normal file
@@ -0,0 +1,127 @@
|
||||
public net.minecraft.client.Minecraft m_202354_()Z # startAttack
|
||||
public net.minecraft.client.gui.components.AbstractSelectionList f_93399_ # scrolling
|
||||
protected-f net.minecraft.client.gui.components.AbstractSelectionList f_93387_ # itemHeight
|
||||
public net.minecraft.client.gui.components.AbstractSliderButton m_93611_(D)V # setValue
|
||||
public net.minecraft.client.gui.components.BossHealthOverlay f_93697_ # GUI_BARS_LOCATION
|
||||
public net.minecraft.client.gui.components.EditBox f_94089_ # responder
|
||||
public net.minecraft.client.gui.GuiGraphics f_279587_ # scissorStack
|
||||
public net.minecraft.client.gui.GuiGraphics m_280479_(Lnet/minecraft/resources/ResourceLocation;IIIIIFFFFFFFF)V # innerBlit
|
||||
public net.minecraft.client.gui.GuiGraphics$ScissorStack
|
||||
public net.minecraft.client.gui.GuiGraphics$ScissorStack f_279656_ # stack
|
||||
public net.minecraft.client.gui.screens.Screen f_267454_ # initialized
|
||||
public net.minecraft.client.Camera f_90562_ # eyeHeight
|
||||
public net.minecraft.client.Camera f_90563_ # eyeHeightOld
|
||||
public net.minecraft.client.Camera m_90566_(D)D # getMaxZoom
|
||||
public net.minecraft.client.Camera m_90568_(DDD)V # move
|
||||
public net.minecraft.client.Camera m_90572_(FF)V # setRotation
|
||||
public net.minecraft.client.Camera m_90584_(DDD)V # setPosition
|
||||
public net.minecraft.client.KeyboardHandler m_90913_(Ljava/lang/String;[Ljava/lang/Object;)V # debugFeedbackTranslated
|
||||
public net.minecraft.client.player.LocalPlayer f_108583_ # sprintToggleTimer
|
||||
public net.minecraft.client.renderer.MultiBufferSource$BufferSource f_109905_ # fixedBuffers
|
||||
public-f net.minecraft.client.renderer.block.model.ItemOverrides f_111735_ # overrides
|
||||
public-f net.minecraft.client.renderer.block.model.ItemOverrides f_173461_ # properties
|
||||
public net.minecraft.client.renderer.block.model.ItemOverrides$BakedOverride <init>([Lnet/minecraft/client/renderer/block/model/ItemOverrides$PropertyMatcher;Lnet/minecraft/client/resources/model/BakedModel;)V
|
||||
public net.minecraft.client.renderer.block.model.ItemOverrides$PropertyMatcher <init>(IF)V
|
||||
public net.minecraft.client.renderer.block.model.ItemOverrides$PropertyMatcher
|
||||
public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer f_117070_ # ARMOR_LOCATION_CACHE
|
||||
public net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer m_117078_(Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/client/model/HumanoidModel; # getArmorModel
|
||||
public net.minecraft.client.renderer.entity.layers.ElytraLayer f_116935_ # elytraModel
|
||||
public net.minecraft.client.renderer.entity.LivingEntityRenderer f_115291_ # layers
|
||||
public net.minecraft.client.renderer.GameRenderer m_109141_(Lnet/minecraft/client/Camera;FZ)D # getFov
|
||||
public net.minecraft.client.renderer.ItemInHandRenderer m_109366_(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ItemStack;)V # renderMap
|
||||
public net.minecraft.client.renderer.LightTexture f_109870_ # lightTexture
|
||||
public net.minecraft.client.renderer.OutlineBufferSource f_109922_ # teamR
|
||||
public net.minecraft.client.renderer.OutlineBufferSource f_109923_ # teamG
|
||||
public net.minecraft.client.renderer.OutlineBufferSource f_109924_ # teamB
|
||||
public net.minecraft.client.renderer.OutlineBufferSource f_109925_ # teamA
|
||||
public net.minecraft.client.renderer.RenderStateShard f_110133_ # name
|
||||
public net.minecraft.client.renderer.RenderStateShard$ShaderStateShard f_173136_ # shader
|
||||
public net.minecraft.client.renderer.RenderStateShard$TextureStateShard f_110329_ # blur
|
||||
public net.minecraft.client.renderer.RenderStateShard$TextureStateShard f_110330_ # mipmap
|
||||
public net.minecraft.client.renderer.RenderStateShard$TextureStateShard f_110328_ # texture
|
||||
public net.minecraft.client.renderer.RenderType f_110389_ # format
|
||||
public net.minecraft.client.renderer.RenderType f_110393_ # sortOnUpload
|
||||
public-f net.minecraft.client.renderer.RenderType$CompositeState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState <init>(Lnet/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard;Lnet/minecraft/client/renderer/RenderStateShard$ShaderStateShard;Lnet/minecraft/client/renderer/RenderStateShard$TransparencyStateShard;Lnet/minecraft/client/renderer/RenderStateShard$DepthTestStateShard;Lnet/minecraft/client/renderer/RenderStateShard$CullStateShard;Lnet/minecraft/client/renderer/RenderStateShard$LightmapStateShard;Lnet/minecraft/client/renderer/RenderStateShard$OverlayStateShard;Lnet/minecraft/client/renderer/RenderStateShard$LayeringStateShard;Lnet/minecraft/client/renderer/RenderStateShard$OutputStateShard;Lnet/minecraft/client/renderer/RenderStateShard$TexturingStateShard;Lnet/minecraft/client/renderer/RenderStateShard$WriteMaskStateShard;Lnet/minecraft/client/renderer/RenderStateShard$LineStateShard;Lnet/minecraft/client/renderer/RenderStateShard$ColorLogicStateShard;Lnet/minecraft/client/renderer/RenderType$OutlineProperty;)V
|
||||
public net.minecraft.client.renderer.RenderType$CompositeRenderType
|
||||
public net.minecraft.client.renderer.RenderType$CompositeRenderType f_110511_ # state
|
||||
public-f net.minecraft.client.renderer.RenderType$CompositeRenderType f_110513_ # outline
|
||||
public net.minecraft.client.renderer.RenderType$CompositeRenderType <init>(Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/VertexFormat$Mode;IZZLnet/minecraft/client/renderer/RenderType$CompositeState;)V
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110576_ # textureState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_173274_ # shaderState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110577_ # transparencyState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110581_ # depthTestState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110582_ # cullState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110583_ # lightmapState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110584_ # overlayState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110586_ # layeringState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110587_ # outputState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110588_ # texturingState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110589_ # writeMaskState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110590_ # lineState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_285566_ # colorLogicState
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState f_110591_ # outlineProperty
|
||||
public-f net.minecraft.client.renderer.RenderType$CompositeState f_110592_ # states
|
||||
public net.minecraft.client.renderer.RenderType$OutlineProperty
|
||||
public net.minecraft.client.renderer.entity.EntityRenderDispatcher f_114363_ # playerRenderers
|
||||
public net.minecraft.client.renderer.entity.player.PlayerRenderer m_117818_(Lnet/minecraft/client/player/AbstractClientPlayer;)V # setModelProperties
|
||||
public net.minecraft.client.renderer.entity.layers.VillagerProfessionLayer f_117623_ # typeHatCache
|
||||
public net.minecraft.client.renderer.entity.layers.VillagerProfessionLayer f_117624_ # professionHatCache
|
||||
public net.minecraft.client.renderer.entity.layers.VillagerProfessionLayer m_117668_(Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/resources/ResourceLocation; # getResourceLocation
|
||||
public net.minecraft.client.multiplayer.ClientLevel f_104561_ # connection
|
||||
public net.minecraft.client.multiplayer.PlayerInfo m_105341_()V # registerTextures
|
||||
public net.minecraft.client.model.geom.ModelPart f_104212_ # cubes
|
||||
public net.minecraft.client.model.geom.ModelPart f_104213_ # childrens
|
||||
public-f net.minecraft.client.model.geom.ModelPart$Cube f_104341_ # polygons
|
||||
public-f net.minecraft.client.model.geom.ModelPart$Polygon f_104360_ # normal
|
||||
public-f net.minecraft.client.model.geom.ModelPart$Polygon f_104359_ # vertices
|
||||
public net.minecraft.client.model.geom.ModelPart$Polygon
|
||||
public net.minecraft.client.model.geom.ModelPart$Vertex
|
||||
public net.minecraft.nbt.CompoundTag f_128329_ # tags
|
||||
public net.minecraft.world.level.dimension.end.EndDragonFight f_64060_ # dragonEvent
|
||||
public net.minecraft.world.level.GameRules$BooleanValue m_46252_(ZLjava/util/function/BiConsumer;)Lnet/minecraft/world/level/GameRules$Type; # create
|
||||
public net.minecraft.world.level.GameRules$IntegerValue m_46294_(ILjava/util/function/BiConsumer;)Lnet/minecraft/world/level/GameRules$Type; # create
|
||||
public net.minecraft.world.level.GameRules$BooleanValue m_46250_(Z)Lnet/minecraft/world/level/GameRules$Type; # create
|
||||
public com.mojang.math.Quaternion f_80119_ # i
|
||||
public com.mojang.math.Quaternion f_80120_ # j
|
||||
public com.mojang.math.Quaternion f_80121_ # k
|
||||
public com.mojang.math.Quaternion f_80122_ # r
|
||||
public net.minecraft.client.particle.Particle m_107271_(F)V # setAlpha
|
||||
public-f net.minecraft.world.entity.ai.attributes.AttributeMap f_22141_ # supplier
|
||||
public net.minecraft.world.entity.ai.attributes.AttributeSupplier f_22241_ # instances
|
||||
public net.minecraft.world.entity.ai.Brain f_21845_ # availableBehaviorsByPriority
|
||||
public net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal f_26048_ # targetType
|
||||
public net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal f_26051_ # targetConditions
|
||||
public-f net.minecraft.world.entity.boss.enderdragon.EnderDragon f_31074_ # phaseManager
|
||||
public net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhase m_31402_(Ljava/lang/Class;Ljava/lang/String;)Lnet/minecraft/world/entity/boss/enderdragon/phases/EnderDragonPhase; # create
|
||||
public net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhaseManager f_31409_ # dragon
|
||||
public net.minecraft.world.entity.boss.enderdragon.EnderDragon f_31075_ # growlTime
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss f_31423_ # xRotHeads
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss f_31425_ # xRotOHeads
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss f_31424_ # yRotHeads
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss f_31426_ # yRotOHeads
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss f_31430_ # bossEvent
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss m_31514_(I)D # getHeadX
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss m_31516_(I)D # getHeadY
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss m_31518_(I)D # getHeadZ
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss m_31457_(ILnet/minecraft/world/entity/LivingEntity;)V # performRangedAttack
|
||||
public net.minecraft.world.entity.boss.wither.WitherBoss m_31448_(IDDDZ)V # performRangedAttack
|
||||
public net.minecraft.world.entity.monster.EnderMan f_32473_ # SCREAMING
|
||||
public net.minecraft.world.entity.monster.EnderMan m_32529_()Z # teleport
|
||||
public net.minecraft.world.entity.projectile.AbstractArrow f_36703_ # inGround
|
||||
public net.minecraft.world.entity.projectile.ThrownTrident f_37556_ # dealtDamage
|
||||
public net.minecraft.world.entity.projectile.ThrownTrident f_37555_ # tridentItem
|
||||
public net.minecraft.world.entity.AreaEffectCloud f_19686_ # victims
|
||||
public net.minecraft.world.entity.Entity f_19815_ # dimensions
|
||||
public net.minecraft.world.entity.Entity f_19861_ # onGround
|
||||
public net.minecraft.world.entity.Entity m_20015_(Lnet/minecraft/world/phys/Vec3;FF)Lnet/minecraft/world/phys/Vec3; # getInputVector
|
||||
public net.minecraft.world.entity.LivingEntity f_20898_ # lastHurt
|
||||
public net.minecraft.world.entity.LivingEntity f_20903_ # lerpSteps
|
||||
public net.minecraft.world.entity.LivingEntity f_20904_ # lerpX
|
||||
public net.minecraft.world.entity.LivingEntity f_20905_ # lerpY
|
||||
public net.minecraft.world.entity.LivingEntity f_20906_ # lerpZ
|
||||
public net.minecraft.world.entity.LivingEntity f_20907_ # lerpYRot
|
||||
public net.minecraft.world.entity.LivingEntity f_20922_ # attackStrengthTicker
|
||||
public net.minecraft.world.entity.LivingEntity f_20954_ # noJumpDelay
|
||||
public net.minecraft.world.item.ItemStack <init>(Ljava/lang/Void;)V # constructor
|
||||
public net.minecraft.world.damagesource.CombatTracker f_19277_ # mob
|
||||
Reference in New Issue
Block a user