version 0.1.2
This commit is contained in:
parent
c855f39bf0
commit
6a14c7e768
|
|
@ -12,7 +12,7 @@ mapping_version=2023.09.03-1.20.1
|
|||
mod_id=sccore
|
||||
mod_name=SnowyCrescentCore
|
||||
mod_license=GNU AGPL 3.0
|
||||
mod_version=1.20.1-0.1.1.4
|
||||
mod_version=1.20.1-0.1.2
|
||||
mod_group_id=com.linearpast
|
||||
mod_authors=LostInLinearPast
|
||||
mod_description=A lib about capability and player animator.
|
||||
|
|
|
|||
|
|
@ -224,6 +224,7 @@ public class AnimationRegistry {
|
|||
public static boolean isAnimationRegistered = false;
|
||||
private static final Map<ResourceLocation, GenericAnimationData> animationsCache = new HashMap<>();
|
||||
private static final Map<ResourceLocation, Integer> layersCache = new HashMap<>();
|
||||
private static final Map<ResourceLocation, IAnimation> modifierLayers = new HashMap<>();
|
||||
|
||||
public static void cacheAddAnimation(ResourceLocation location, GenericAnimationData animation) {
|
||||
animationsCache.put(location, animation);
|
||||
|
|
@ -249,10 +250,14 @@ public class AnimationRegistry {
|
|||
}
|
||||
case LAYER_REGISTER -> {
|
||||
registerLayers(layersCache);
|
||||
layersCache.forEach((key, value) ->
|
||||
PlayerAnimationFactory.ANIMATION_DATA_FACTORY.registerFactory(
|
||||
key, value, ClientCache::registerPlayerAnimation
|
||||
)
|
||||
layersCache.forEach((key, value) -> PlayerAnimationFactory.ANIMATION_DATA_FACTORY.registerFactory(
|
||||
key, value, player -> {
|
||||
Optional<ResourceLocation> optional = modifierLayers.keySet().stream().filter(key::equals).findFirst();
|
||||
if(optional.isPresent()) return modifierLayers.get(optional.get());
|
||||
IAnimation iAnimation = ClientCache.registerPlayerAnimation(player);
|
||||
modifierLayers.put(key, iAnimation);
|
||||
return iAnimation;
|
||||
})
|
||||
);
|
||||
ClientLevel level = Minecraft.getInstance().level;
|
||||
if(level == null) {
|
||||
|
|
@ -279,8 +284,17 @@ public class AnimationRegistry {
|
|||
ArrayList<Pair<Integer, IAnimation>> oldArrayList = (ArrayList<Pair<Integer, IAnimation>>) layersField.get(oldAnimationStack);
|
||||
ArrayList<Pair<Integer, IAnimation>> newArrayList = (ArrayList<Pair<Integer, IAnimation>>) layersField.get(newAnimationStack);
|
||||
ArrayList<Pair<Integer, IAnimation>> result = new ArrayList<>();
|
||||
for (Pair<Integer, IAnimation> integerIAnimationPair : oldArrayList) {
|
||||
for (Pair<Integer, IAnimation> iAnimationPair : List.copyOf(newArrayList)) {
|
||||
if(Objects.equals(iAnimationPair.getLeft(), integerIAnimationPair.getLeft())
|
||||
&& Objects.equals(iAnimationPair.getRight(), integerIAnimationPair.getRight())) {
|
||||
newArrayList.remove(iAnimationPair);
|
||||
}
|
||||
}
|
||||
}
|
||||
result.addAll(oldArrayList);
|
||||
result.addAll(newArrayList);
|
||||
|
||||
layersField.set(newAnimationStack, result);
|
||||
animationStackField.set(player, newAnimationStack);
|
||||
Field animationApplierField = playerClass.getDeclaredField("animationApplier");
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public class RawAnimationService implements IAnimationService<RawAnimationData,
|
|||
if(FMLEnvironment.dist == Dist.CLIENT) {
|
||||
return RawAnimationRegistry.getAnimations().getOrDefault(location, null);
|
||||
} else {
|
||||
return null;
|
||||
return RawAnimationData.create(location);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.linearpast.sccore.example.animation;
|
||||
|
||||
import com.linearpast.sccore.SnowyCrescentCore;
|
||||
import com.linearpast.sccore.animation.data.RawAnimationData;
|
||||
import com.linearpast.sccore.animation.data.GenericAnimationData;
|
||||
import com.linearpast.sccore.animation.data.Ride;
|
||||
import com.linearpast.sccore.animation.event.create.AnimationRegisterEvent;
|
||||
import com.linearpast.sccore.animation.service.AnimationService;
|
||||
|
|
@ -47,38 +47,38 @@ public class ModAnimation {
|
|||
*/
|
||||
public static void onAnimationRegister(AnimationRegisterEvent.Animation event) {
|
||||
//You must define corresponding Animation to invite
|
||||
// Animation amLTRL = Animation.create(AmLyingToRightLying)
|
||||
// .withLyingType(Animation.LyingType.RIGHT)
|
||||
// .withName("Lying-to-Right-Lying");
|
||||
// Animation amSTL = Animation.create(AmStandToLying)
|
||||
// .withName("Stand-to-Lying")
|
||||
// .withLyingType(Animation.LyingType.FRONT);
|
||||
// Animation waltzGentleman = Animation.create(WaltzGentleman)
|
||||
// .withName("Waltz-Gentleman")
|
||||
// .withRide(Ride.create().addComponentAnimation(WaltzLady));
|
||||
// Animation waltzLady = Animation.create(WaltzLady)
|
||||
// .withName("Waltz-Lady")
|
||||
// .withCamYaw(180)
|
||||
// .withRide(Ride.create().addComponentAnimation(WaltzGentleman));
|
||||
//
|
||||
// //You can use it to invite an Animation
|
||||
// event.registerAnimation(AmLyingToRightLying, amLTRL);
|
||||
// event.registerAnimation(AmStandToLying, amSTL);
|
||||
// event.registerAnimation(WaltzGentleman, waltzGentleman);
|
||||
// event.registerAnimation(WaltzLady, waltzLady);
|
||||
}
|
||||
GenericAnimationData amLTRL = GenericAnimationData.create(AmLyingToRightLying)
|
||||
.withLyingType(GenericAnimationData.LyingType.RIGHT)
|
||||
.withName("Lying-to-Right-Lying");
|
||||
GenericAnimationData amSTL = GenericAnimationData.create(AmStandToLying)
|
||||
.withName("Stand-to-Lying")
|
||||
.withLyingType(GenericAnimationData.LyingType.FRONT);
|
||||
GenericAnimationData waltzGentleman = GenericAnimationData.create(WaltzGentleman)
|
||||
.withName("Waltz-Gentleman")
|
||||
.withRide(Ride.create().addComponentAnimation(WaltzLady));
|
||||
GenericAnimationData waltzLady = GenericAnimationData.create(WaltzLady)
|
||||
.withName("Waltz-Lady")
|
||||
.withCamYaw(180)
|
||||
.withRide(Ride.create().addComponentAnimation(WaltzGentleman));
|
||||
|
||||
public static void onRawAnimationRegister(AnimationRegisterEvent.RawAnimation event) {
|
||||
RawAnimationData amSTL = RawAnimationData.create(AmStandToLying).withRide(Ride.create().withExistTick(100));
|
||||
RawAnimationData amLTRL = RawAnimationData.create(AmLyingToRightLying).withRide(Ride.create().withExistTick(100));
|
||||
RawAnimationData waltzGentleman = RawAnimationData.create(WaltzGentleman).withRide(Ride.create().withExistTick(100).addComponentAnimation(WaltzLady));
|
||||
RawAnimationData waltzLady = RawAnimationData.create(WaltzLady).withRide(Ride.create().withExistTick(100).addComponentAnimation(WaltzGentleman));
|
||||
//You can use it to invite an Animation
|
||||
event.registerAnimation(AmLyingToRightLying, amLTRL);
|
||||
event.registerAnimation(AmStandToLying, amSTL);
|
||||
event.registerAnimation(WaltzGentleman, waltzGentleman);
|
||||
event.registerAnimation(WaltzLady, waltzLady);
|
||||
}
|
||||
|
||||
public static void onRawAnimationRegister(AnimationRegisterEvent.RawAnimation event) {
|
||||
// RawAnimationData amSTL = RawAnimationData.create(AmStandToLying).withRide(Ride.create().withExistTick(100));
|
||||
// RawAnimationData amLTRL = RawAnimationData.create(AmLyingToRightLying).withRide(Ride.create().withExistTick(100));
|
||||
// RawAnimationData waltzGentleman = RawAnimationData.create(WaltzGentleman).withRide(Ride.create().withExistTick(100).addComponentAnimation(WaltzLady));
|
||||
// RawAnimationData waltzLady = RawAnimationData.create(WaltzLady).withRide(Ride.create().withExistTick(100).addComponentAnimation(WaltzGentleman));
|
||||
// event.registerAnimation(AmLyingToRightLying, amLTRL);
|
||||
// event.registerAnimation(AmStandToLying, amSTL);
|
||||
// event.registerAnimation(WaltzGentleman, waltzGentleman);
|
||||
// event.registerAnimation(WaltzLady, waltzLady);
|
||||
}
|
||||
|
||||
public static void register(IEventBus forgeBus, IEventBus modBus) {
|
||||
//Register by event
|
||||
//Or use AnimationUtils.registerAnimationLayer(ResourceLocation layer, int priority);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user