Skip to content

Commit

Permalink
add tag to restrict flying per dimension
Browse files Browse the repository at this point in the history
(closes #46)
  • Loading branch information
UpcraftLP committed Apr 14, 2024
1 parent 655c1c8 commit 6435a56
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package dev.cammiescorner.icarus.init;

import dev.cammiescorner.icarus.Icarus;
import net.minecraft.core.registries.Registries;
import net.minecraft.tags.TagKey;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.dimension.DimensionType;

public class IcarusDimensionTags {

public static final TagKey<Level> NO_FLYING_ALLOWED = TagKey.create(Registries.DIMENSION, Icarus.id("no_flying_allowed"));
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

import dev.cammiescorner.icarus.IcarusConfig;
import dev.cammiescorner.icarus.api.SlowFallingEntity;
import dev.cammiescorner.icarus.init.IcarusDimensionTags;
import dev.cammiescorner.icarus.init.IcarusItemTags;
import dev.cammiescorner.icarus.item.WingItem;
import dev.cammiescorner.icarus.network.s2c.SyncConfigValuesPacket;
import net.minecraft.ChatFormatting;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
Expand All @@ -22,6 +26,14 @@ public class IcarusHelper {
public static BiPredicate<LivingEntity, ItemStack> equipFunc = (entity, stack) -> false;

public static boolean onFallFlyingTick(LivingEntity entity, @Nullable ItemStack wings, boolean tick) {
if(!entity.level().isClientSide() && entity.level().registryAccess().registryOrThrow(Registries.DIMENSION).getHolderOrThrow(entity.level().dimension()).is(IcarusDimensionTags.NO_FLYING_ALLOWED)) {
if (entity instanceof ServerPlayer player) {
stopFlying(player);
player.sendSystemMessage(Component.translatable("message.icarus.status.no_fly.dimension").withStyle(ChatFormatting.RED), true);
}
return false;
}

if (wings != null) {
if (!(wings.getItem() instanceof WingItem wingItem) || !wingItem.isUsable(entity, wings)) {
if (entity instanceof Player player) {
Expand Down
4 changes: 3 additions & 1 deletion Common/src/main/resources/assets/icarus/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,5 +97,7 @@
"config.icarus.wings_speed": "How fast the wings can fly.",
"config.icarus.wings_durability": "How much durability all the wings have.",
"config.icarus.exhaustion_amount": "Exhaustion cost for flying.",
"config.icarus.roll_amount": "How much the player can roll while flying. (Requires CameraOverhaul)"
"config.icarus.roll_amount": "How much the player can roll while flying. (Requires CameraOverhaul)",

"message.icarus.status.no_fly.dimension": "Flying is not allowed in this dimension!"
}
4 changes: 3 additions & 1 deletion Common/src/main/resources/assets/icarus/lang/pt_br.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,5 +97,7 @@
"config.icarus.wings_speed": "Quão rápido as asas voam.",
"config.icarus.wings_durability": "Quanta durabilidade todas as asas tem.",
"config.icarus.exhaustion_amount": "Custo de exaustão por vôo.",
"config.icarus.roll_amount": "Quanto o jogador pode rodar enquanto voa. (Requires CameraOverhaul)"
"config.icarus.roll_amount": "Quanto o jogador pode rodar enquanto voa. (Requires CameraOverhaul)",

"message.icarus.status.no_fly.dimension": "Flying is not allowed in this dimension!"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"replace": false,
"values": [
]
}

0 comments on commit 6435a56

Please sign in to comment.