diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml
index 8778f7746..b8f4528e9 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml
@@ -24,6 +24,6 @@
v0.14
v0.14b
- 20241128032210
+ 20241129180156
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.md5 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.md5
index 99c3050fd..f464ea75d 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.md5
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.md5
@@ -1 +1 @@
-2c859a28f8b31681397a1e479bda4f5e
\ No newline at end of file
+a67f0e3cdb76a72e028d564543477824
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha1 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha1
index 69c6d0eb5..8d3a444ed 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha1
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha1
@@ -1 +1 @@
-71aa43a157b5ae0a0784f4652a943760a386c450
\ No newline at end of file
+c65a884d3a657f11b5aa791e204736109fdb5ed5
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha256 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha256
index 5368b4a74..57c484374 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha256
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha256
@@ -1 +1 @@
-8559bf60f44938c6c9c71ead5da1350551b0c95dcda5296ab09fa3e409a15b26
\ No newline at end of file
+2f22f7df0c7728ad3ab9f15c2ebbd9aed38d22fae263d5cf4beed36e9d1ec174
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha512 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha512
index fb46c4de8..26c74b98d 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha512
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/maven-metadata.xml.sha512
@@ -1 +1 @@
-e99538e5153b3bbe9e160e913ed6393dff6200e936b7bd13a584c0e4eb26203896dfe0e5f81b9d4d2b4c3f39df283979be2a0aa471da28ba7838fcdcf18afc49
\ No newline at end of file
+e79ac19294c90e584dfb581ac75a991253e96e666fb6bc7146ba907d02fa9fe120bc84aa08de660828012c8799c151b078c3b01b17386e1bb513e19df253eb7a
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar
index 33fd43a97..050f4bdfa 100644
Binary files a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar and b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar differ
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.md5 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.md5
index 3255a97c9..1fec748dd 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.md5
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.md5
@@ -1 +1 @@
-db3ddf89372589f4d08db2b0da3e2e29
\ No newline at end of file
+ddbd6b59374c3e27fee42409b7fb69aa
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha1 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha1
index 484082176..70945d639 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha1
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha1
@@ -1 +1 @@
-e001c3766ac605f3fbd19c9b450a32d5b1e9ebc0
\ No newline at end of file
+f3cb15af80272afdb934a0105a79adc0a662ea0b
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha256 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha256
index c1e5b0c5b..fc3ea3c05 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha256
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha256
@@ -1 +1 @@
-257ee454b0316dfcf9af29181eb06c38a9629ed63f5fd37201b6952455332ce9
\ No newline at end of file
+2fe1377226680963003e872a526453dd6deb88e7ee98de24cc14abd88c9c3047
\ No newline at end of file
diff --git a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha512 b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha512
index f3f9a1088..ad8e2d1df 100644
--- a/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha512
+++ b/mcmodsrepo/net/ltxprogrammer/changed/Changed-m1.18.2-f40.2.0/v0.14b/Changed-m1.18.2-f40.2.0-v0.14b.jar.sha512
@@ -1 +1 @@
-8b4de85d42dca557c34d8add81d04f2b58cd1af3b312c16155bbc2a6227dfc4bcdbe6acfbd0aa54a2547168dc4bf041f7ce1593be38cb43976fc71e1481f5c8e
\ No newline at end of file
+0eb81704cfe523510fac3c2672bc6c40ab9c2cf878026b316ea65a60edfbba074a27e065fa07807b488bcbb622eec67dfed7f703f9d0da8e80337ca42f8677ad
\ No newline at end of file
diff --git a/src/main/java/net/ltxprogrammer/changed/block/RailingBlock.java b/src/main/java/net/ltxprogrammer/changed/block/RailingBlock.java
index 0999cd309..56fd641ed 100644
--- a/src/main/java/net/ltxprogrammer/changed/block/RailingBlock.java
+++ b/src/main/java/net/ltxprogrammer/changed/block/RailingBlock.java
@@ -352,7 +352,18 @@ public BlockState updateShape(BlockState state, Direction direction, BlockState
level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level));
}
- return computeState(level, pos, super.updateShape(state, direction, otherState, level, pos, otherPos));
+ BlockState newState = super.updateShape(state, direction, otherState, level, pos, otherPos);
+
+ boolean fullyConnected = newState.getValue(SHAPE).getConnectionDirections(newState.getValue(FACING))
+ .filter(connectionDirection -> connectionDirection != direction)
+ .map(connectionDirection ->
+ canConnect(level, newState, connectionDirection, level.getBlockState(pos.relative(connectionDirection)), pos.relative(connectionDirection)).strength)
+ .filter(strength -> strength == ConnectionStrength.STRONG).count() == 2;
+
+ if (fullyConnected)
+ return newState;
+
+ return computeState(level, pos, newState);
}
@Override
diff --git a/src/main/java/net/ltxprogrammer/changed/client/LocalTransfurVariantInstance.java b/src/main/java/net/ltxprogrammer/changed/client/LocalTransfurVariantInstance.java
index b37c2dd12..1cc26a77f 100644
--- a/src/main/java/net/ltxprogrammer/changed/client/LocalTransfurVariantInstance.java
+++ b/src/main/java/net/ltxprogrammer/changed/client/LocalTransfurVariantInstance.java
@@ -19,7 +19,7 @@ public LocalTransfurVariantInstance(TransfurVariant parent, LocalPlayer host)
protected void tickTransfurProgress() {
super.tickTransfurProgress();
- if (transfurProgression < 1f) {
+ if (transfurProgression < 1f || this.ageAsVariant < 30 || !this.getItemUseMode().holdMainHand) {
((LocalPlayerAccessor)host).setHandsBusy(true);
} else if (host.getVehicle() == null && host.isHandsBusy()) {
((LocalPlayerAccessor)host).setHandsBusy(false);
diff --git a/src/main/java/net/ltxprogrammer/changed/client/renderer/SpecialLatexRenderer.java b/src/main/java/net/ltxprogrammer/changed/client/renderer/SpecialLatexRenderer.java
index 30f87ce5c..f39fa00f1 100644
--- a/src/main/java/net/ltxprogrammer/changed/client/renderer/SpecialLatexRenderer.java
+++ b/src/main/java/net/ltxprogrammer/changed/client/renderer/SpecialLatexRenderer.java
@@ -83,11 +83,11 @@ protected boolean runIfValid(SpecialLatex entity, Consumer
// Returns true if continue with regular code, false if to return, accepts if delegate and valid
protected Optional runIfValid(SpecialLatex entity, Function rendererConsumer) {
if (this.isDelegate) {
- if (entity.getAssignedUUID() == null) return Optional.ofNullable(null);
+ if (entity.getAssignedUUID() == null) return Optional.empty();
PatreonBenefits.SpecialForm form = PatreonBenefits.getPlayerSpecialForm(entity.getAssignedUUID());
- if (form == null) return Optional.ofNullable(null);
+ if (form == null) return Optional.empty();
- return Optional.of(rendererConsumer.apply(getAndCacheFor(entity)));
+ return Optional.ofNullable(rendererConsumer.apply(getAndCacheFor(entity)));
}
else
@@ -117,11 +117,7 @@ public ResourceLocation getTextureLocation(SpecialLatex latex) {
public AdvancedHumanoidModel getModel(ChangedEntity entity) {
if (entity instanceof SpecialLatex specialLatex) {
- var opt = runIfValid(specialLatex, renderer -> { return renderer.getModel(); });
- if (opt.isEmpty())
- return this.getModel();
- else
- return opt.get();
+ return runIfValid(specialLatex, renderer -> { return renderer.getModel(); }).orElseGet(this::getModel);
}
return null;
diff --git a/src/main/java/net/ltxprogrammer/changed/command/CommandTransfur.java b/src/main/java/net/ltxprogrammer/changed/command/CommandTransfur.java
index 4e1659aac..cf1ca1095 100644
--- a/src/main/java/net/ltxprogrammer/changed/command/CommandTransfur.java
+++ b/src/main/java/net/ltxprogrammer/changed/command/CommandTransfur.java
@@ -18,6 +18,7 @@
import net.ltxprogrammer.changed.item.Syringe;
import net.ltxprogrammer.changed.process.ProcessTransfur;
import net.minecraft.SharedConstants;
+import net.minecraft.Util;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.SharedSuggestionProvider;
@@ -49,10 +50,12 @@ public class CommandTransfur {
private static final SimpleCommandExceptionType NOT_CAUSE = new SimpleCommandExceptionType(new TranslatableComponent("command.changed.error.not_cause"));
private static final SimpleCommandExceptionType USED_BY_OTHER_MOD = new SimpleCommandExceptionType(new TranslatableComponent("command.changed.error.used_by_other_mod"));
private static final SimpleCommandExceptionType NO_SPECIAL_FORM = new SimpleCommandExceptionType(new TranslatableComponent("command.changed.error.no_special_form"));
+ private static final ResourceLocation RANDOM_VARIANT = Changed.modResource("random");
- public static final SuggestionProvider SUGGEST_LATEX_FORMS = SuggestionProviders.register(Changed.modResource("latex_forms"), (p_121667_, p_121668_) -> {
+ public static final SuggestionProvider SUGGEST_TRANSFUR_VARIANT = SuggestionProviders.register(Changed.modResource("transfur_variant"), (p_121667_, p_121668_) -> {
var list = TransfurVariant.getPublicTransfurVariants().map(TransfurVariant::getRegistryName).collect(Collectors.toCollection(ArrayList::new));
list.add(TransfurVariant.SPECIAL_LATEX);
+ list.add(RANDOM_VARIANT);
return SharedSuggestionProvider.suggestResource(list, p_121668_);
});
@@ -65,7 +68,7 @@ public class CommandTransfur {
public static void registerCommands(RegisterCommandsEvent event) {
var transfurNode = event.getDispatcher().register(Commands.literal("transfur").requires(p -> p.hasPermission(2))
.then(Commands.argument("players", EntityArgument.player())
- .then(Commands.argument("form", ResourceLocationArgument.id()).suggests(SUGGEST_LATEX_FORMS)
+ .then(Commands.argument("form", ResourceLocationArgument.id()).suggests(SUGGEST_TRANSFUR_VARIANT)
.executes(context -> transfurPlayers(context.getSource(),
EntityArgument.getPlayers(context, "players"),
ResourceLocationArgument.getId(context, "form"),
@@ -79,7 +82,7 @@ public static void registerCommands(RegisterCommandsEvent event) {
event.getDispatcher().register(Commands.literal("tf").requires(p -> p.hasPermission(2)).redirect(transfurNode));
var progressTransfurNode = event.getDispatcher().register(Commands.literal("progresstransfur").requires(p -> p.hasPermission(2))
.then(Commands.argument("players", EntityArgument.players())
- .then(Commands.argument("form", ResourceLocationArgument.id()).suggests(SUGGEST_LATEX_FORMS)
+ .then(Commands.argument("form", ResourceLocationArgument.id()).suggests(SUGGEST_TRANSFUR_VARIANT)
.then(Commands.argument("progression", FloatArgumentType.floatArg(0.0f))
.executes(context -> progressPlayersTransfur(context.getSource(),
EntityArgument.getPlayers(context, "players"),
@@ -148,6 +151,9 @@ private static int transfurPlayer(CommandSourceStack source, ServerPlayer player
if (ChangedCompatibility.isPlayerUsedByOtherMod(player))
throw USED_BY_OTHER_MOD.create();
+ if (form.equals(RANDOM_VARIANT))
+ form = Util.getRandom(TransfurVariant.getPublicTransfurVariants().collect(Collectors.toList()), player.getRandom()).getFormId();
+
if (TransfurVariant.getPublicTransfurVariants().map(TransfurVariant::getRegistryName).anyMatch(form::equals)) {
ProcessTransfur.transfur(player, source.getLevel(), ChangedRegistry.TRANSFUR_VARIANT.get().getValue(form), true,
TransfurContext.hazard(transfurCause));
@@ -205,6 +211,9 @@ else if (source.getEntity() instanceof ChangedEntity sourceNpc)
else
context = null;
+ if (form.equals(RANDOM_VARIANT))
+ form = Util.getRandom(TransfurVariant.getPublicTransfurVariants().collect(Collectors.toList()), player.getRandom()).getFormId();
+
if (TransfurVariant.getPublicTransfurVariants().map(TransfurVariant::getRegistryName).anyMatch(form::equals)) {
ProcessTransfur.progressPlayerTransfur(player, progression, ChangedRegistry.TRANSFUR_VARIANT.get().getValue(form), context);
}
diff --git a/src/main/java/net/ltxprogrammer/changed/entity/variant/TransfurVariantInstance.java b/src/main/java/net/ltxprogrammer/changed/entity/variant/TransfurVariantInstance.java
index a2f22c642..4517bdc9c 100644
--- a/src/main/java/net/ltxprogrammer/changed/entity/variant/TransfurVariantInstance.java
+++ b/src/main/java/net/ltxprogrammer/changed/entity/variant/TransfurVariantInstance.java
@@ -2,6 +2,8 @@
import com.google.common.collect.ImmutableMap;
import com.mojang.datafixers.util.Pair;
+import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap;
+import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap;
import net.ltxprogrammer.changed.Changed;
import net.ltxprogrammer.changed.ability.AbstractAbility;
import net.ltxprogrammer.changed.ability.AbstractAbilityInstance;
@@ -1003,13 +1005,19 @@ public UseItemMode getItemUseMode() {
}
public float getSwimEfficiency() {
- double baselineSwim = DEFAULT_PLAYER_ATTRIBUTES.get().getInstance(ForgeMod.SWIM_SPEED.get()).getBaseValue();
+ if (!newAttributes.containsKey(ForgeMod.SWIM_SPEED.get()))
+ return 1.0f;
+
+ double baselineSwim = DEFAULT_PLAYER_ATTRIBUTES.get().getBaseValue(ForgeMod.SWIM_SPEED.get());
double intendedSwim = newAttributes.get(ForgeMod.SWIM_SPEED.get());
return (float)(baselineSwim / intendedSwim);
}
public float getSprintEfficiency() {
- double baselineSprint = DEFAULT_PLAYER_ATTRIBUTES.get().getInstance(Attributes.MOVEMENT_SPEED).getBaseValue();
+ if (!newAttributes.containsKey(Attributes.MOVEMENT_SPEED))
+ return 1.0f;
+
+ double baselineSprint = DEFAULT_PLAYER_ATTRIBUTES.get().getBaseValue(Attributes.MOVEMENT_SPEED);
double intendedSprint = newAttributes.get(Attributes.MOVEMENT_SPEED) * 0.1;
return (float)(baselineSprint / intendedSprint);
}
diff --git a/src/main/java/net/ltxprogrammer/changed/init/ChangedTags.java b/src/main/java/net/ltxprogrammer/changed/init/ChangedTags.java
index 1a0f227ba..82e7d7f4f 100644
--- a/src/main/java/net/ltxprogrammer/changed/init/ChangedTags.java
+++ b/src/main/java/net/ltxprogrammer/changed/init/ChangedTags.java
@@ -78,13 +78,9 @@ private static TagKey create(String name) {
}
public static class TransfurVariants {
- public static final TagKey> WOLF_LIKE = create("wolf_like");
- public static final TagKey> SHARK_LIKE = create("shark_like");
- public static final TagKey> CAT_LIKE = create("cat_like");
- public static final TagKey> LEOPARD_LIKE = create("leopard_like");
-
public static final TagKey> CAN_SLEEP_ON_PILLOWS = create("can_sleep_on_pillows");
public static final TagKey> BREAK_ITEMS_ON_TF = create("break_items_on_tf");
+ public static final TagKey> TEMPORARY_ONLY = create("temporary_only");
private static TagKey> create(String name) {
return TagKey.create(ChangedRegistry.TRANSFUR_VARIANT.key, Changed.modResource(name));
diff --git a/src/main/java/net/ltxprogrammer/changed/mixin/entity/PlayerMixin.java b/src/main/java/net/ltxprogrammer/changed/mixin/entity/PlayerMixin.java
index 785a31904..7427597c3 100644
--- a/src/main/java/net/ltxprogrammer/changed/mixin/entity/PlayerMixin.java
+++ b/src/main/java/net/ltxprogrammer/changed/mixin/entity/PlayerMixin.java
@@ -108,14 +108,6 @@ protected void getSwimSound(CallbackInfoReturnable ci) {
}
}
- @Inject(method = "hurt", at = @At("HEAD"), cancellable = true)
- public void orNotHurt(DamageSource p_36154_, float p_36155_, CallbackInfoReturnable cir) {
- ProcessTransfur.ifPlayerTransfurred(EntityUtil.playerOrNull(this), variant -> {
- if (variant.ageAsVariant < 30)
- cir.cancel();
- });
- }
-
@Inject(method = "createAttributes", at = @At("RETURN"))
private static void addChangedAttributes(CallbackInfoReturnable cir) {
cir.getReturnValue().add(ChangedAttributes.TRANSFUR_DAMAGE.get(), 3.0D);
diff --git a/src/main/java/net/ltxprogrammer/changed/mixin/entity/ServerPlayerMixin.java b/src/main/java/net/ltxprogrammer/changed/mixin/entity/ServerPlayerMixin.java
index 4049261c2..addb81c11 100644
--- a/src/main/java/net/ltxprogrammer/changed/mixin/entity/ServerPlayerMixin.java
+++ b/src/main/java/net/ltxprogrammer/changed/mixin/entity/ServerPlayerMixin.java
@@ -4,10 +4,12 @@
import net.ltxprogrammer.changed.Changed;
import net.ltxprogrammer.changed.entity.PlayerDataExtension;
import net.ltxprogrammer.changed.entity.TransfurCause;
+import net.ltxprogrammer.changed.entity.UseItemMode;
import net.ltxprogrammer.changed.entity.variant.TransfurVariant;
import net.ltxprogrammer.changed.entity.variant.TransfurVariantInstance;
import net.ltxprogrammer.changed.init.ChangedGameRules;
import net.ltxprogrammer.changed.init.ChangedRegistry;
+import net.ltxprogrammer.changed.init.ChangedTags;
import net.ltxprogrammer.changed.init.ChangedTransfurVariants;
import net.ltxprogrammer.changed.network.packet.MountTransfurPacket;
import net.ltxprogrammer.changed.process.Pale;
@@ -49,8 +51,12 @@ public void restoreFrom(ServerPlayer player, boolean restore, CallbackInfo callb
ProcessTransfur.ifPlayerTransfurred(player, oldVariant -> {
if (!oldVariant.willSurviveTransfur)
return;
+ if (!restore && oldVariant.getParent().is(ChangedTags.TransfurVariants.TEMPORARY_ONLY))
+ return; // Exception to keepForm gamerule
var newVariant = ProcessTransfur.setPlayerTransfurVariant(self, oldVariant.getParent(), oldVariant.transfurContext, oldVariant.transfurProgression);
+ if (newVariant == null)
+ return;
newVariant.load(oldVariant.save());
newVariant.getChangedEntity().readPlayerVariantData(oldVariant.getChangedEntity().savePlayerVariantData());
newVariant.handleRespawn();
diff --git a/src/main/resources/data/changed/tags/changed/latex_variant/cat_like.json b/src/main/resources/data/changed/tags/changed/latex_variant/cat_like.json
deleted file mode 100644
index 9edc3ca53..000000000
--- a/src/main/resources/data/changed/tags/changed/latex_variant/cat_like.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "replace": false,
- "values": [
- "changed:form_latex_hypno_cat",
- "changed:form_latex_watermelon_cat"
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/data/changed/tags/changed/latex_variant/leopard_like.json b/src/main/resources/data/changed/tags/changed/latex_variant/leopard_like.json
deleted file mode 100644
index 58db8051e..000000000
--- a/src/main/resources/data/changed/tags/changed/latex_variant/leopard_like.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "replace": false,
- "values": [
- "changed:form_latex_snow_leopard/male",
- "changed:form_latex_snow_leopard/female",
- "changed:form_latex_raccoon",
- "changed:form_latex_red_panda"
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/data/changed/tags/changed/latex_variant/shark_like.json b/src/main/resources/data/changed/tags/changed/latex_variant/shark_like.json
deleted file mode 100644
index 3748c160a..000000000
--- a/src/main/resources/data/changed/tags/changed/latex_variant/shark_like.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "replace": false,
- "values": [
- "changed:form_latex_shark",
- "changed:form_latex_shark/male",
- "changed:form_latex_shark/female",
- "changed:form_latex_tiger_shark",
- "changed:form_latex_orca",
- "changed:form_latex_manta_ray/male",
- "changed:form_latex_manta_ray/female"
- ]
-}
\ No newline at end of file
diff --git a/src/main/resources/data/changed/tags/changed/latex_variant/temporary_only.json b/src/main/resources/data/changed/tags/changed/latex_variant/temporary_only.json
new file mode 100644
index 000000000..06b4df67a
--- /dev/null
+++ b/src/main/resources/data/changed/tags/changed/latex_variant/temporary_only.json
@@ -0,0 +1,6 @@
+{
+ "replace": false,
+ "values": [
+ "changed:form_latex_benign_wolf"
+ ]
+}
\ No newline at end of file
diff --git a/src/main/resources/data/changed/tags/changed/latex_variant/wolf_like.json b/src/main/resources/data/changed/tags/changed/latex_variant/wolf_like.json
deleted file mode 100644
index 3ff90c0d2..000000000
--- a/src/main/resources/data/changed/tags/changed/latex_variant/wolf_like.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "replace": false,
- "values": [
- "changed:form_latex_keon_wolf",
- "changed:form_dark_latex_wolf/male",
- "changed:form_dark_latex_wolf/female",
- "changed:form_white_latex_wolf/male",
- "changed:form_white_latex_wolf/female",
- "changed:form_latex_blue_wolf",
- "changed:form_gas_wolf",
- "changed:form_latex_purple_fox",
- "changed:form_crystal_wolf",
- "changed:form_crystal_wolf_horned",
- "changed:form_sniper_dog",
- "changed:form_latex_squid_dog/male",
- "changed:form_latex_squid_dog/female",
- "changed:form_latex_benign_wolf",
- "changed:form_white_wolf/male",
- "changed:form_white_wolf/female"
- ]
-}
\ No newline at end of file