This commit is contained in:
Flemmli97 2023-05-06 15:58:42 +02:00
parent a3e5a32548
commit 24a66f91f8
18 changed files with 86 additions and 52 deletions

View File

@ -1,6 +1,9 @@
Flan 1.8.4.1
================
- Fabric: Add harvest with ease compat
- Update to 1.19.4
<i>
- Fabric: Add harvest with ease compat
</i>
Flan 1.8.4
================

View File

@ -4,7 +4,7 @@ import com.mojang.datafixers.util.Pair;
import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.minecraft.core.HolderSet;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.item.BoneMealItem;
@ -70,7 +70,7 @@ public class ObjectToPermissionMap {
boolean remove = sub[1].equals("NONE");
if (s.startsWith("@")) {
ResourceLocation res = new ResourceLocation(sub[0].substring(1));
Optional<HolderSet.Named<Item>> t = Registry.ITEM.getTags().filter(p -> p.getFirst().location().equals(res))
Optional<HolderSet.Named<Item>> t = BuiltInRegistries.ITEM.getTags().filter(p -> p.getFirst().location().equals(res))
.map(Pair::getSecond).findFirst();
t.ifPresent(holders -> holders.forEach(i -> {
if (remove)
@ -90,7 +90,7 @@ public class ObjectToPermissionMap {
boolean remove = sub[1].equals("NONE");
if (s.startsWith("@")) {
ResourceLocation res = new ResourceLocation(sub[0].substring(1));
Optional<HolderSet.Named<Block>> t = Registry.BLOCK.getTags().filter(p -> p.getFirst().location().equals(res))
Optional<HolderSet.Named<Block>> t = BuiltInRegistries.BLOCK.getTags().filter(p -> p.getFirst().location().equals(res))
.map(Pair::getSecond).findFirst();
t.ifPresent(holders -> holders.forEach(i -> {
if (remove)

View File

@ -141,13 +141,13 @@ public class Claim implements IPermissionContainer {
}
private BlockPos getInitCenterPos() {
BlockPos center = new BlockPos(this.minX + (this.maxX - this.minX) * 0.5, 0, this.minZ + (this.maxZ - this.minZ) * 0.5);
BlockPos center = BlockPos.containing(this.minX + (this.maxX - this.minX) * 0.5, 0, this.minZ + (this.maxZ - this.minZ) * 0.5);
int y = this.world.getChunk(center.getX() >> 4, center.getZ() >> 4, ChunkStatus.HEIGHTMAPS).getHeight(Heightmap.Types.MOTION_BLOCKING, center.getX() & 15, center.getZ() & 15);
return new BlockPos(center.getX(), y + 1, center.getZ());
}
private BlockPos getDefaultCenterPos() {
BlockPos center = new BlockPos(this.minX + (this.maxX - this.minX) * 0.5, 0, this.minZ + (this.maxZ - this.minZ) * 0.5);
BlockPos center = BlockPos.containing(this.minX + (this.maxX - this.minX) * 0.5, 0, this.minZ + (this.maxZ - this.minZ) * 0.5);
return new BlockPos(center.getX(), 255, center.getZ());
}

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.claim;
import com.mojang.math.Vector3f;
import net.minecraft.core.particles.DustParticleOptions;
import org.joml.Vector3f;
public class ParticleIndicators {

View File

@ -497,7 +497,7 @@ public class CommandClaim {
private static int adminDelete(CommandContext<CommandSourceStack> context) {
CommandSourceStack src = context.getSource();
ClaimStorage storage = ClaimStorage.get(src.getLevel());
Claim claim = storage.getClaimAt(new BlockPos(src.getPosition()));
Claim claim = storage.getClaimAt(BlockPos.containing(src.getPosition()));
if (claim == null) {
src.sendSuccess(PermHelper.simpleColoredText(ConfigHandler.langManager.get("noClaim"), ChatFormatting.RED), false);
return 0;

View File

@ -47,7 +47,7 @@ public class CommandHelpers {
public static CompletableFuture<Suggestions> permSuggestions(CommandContext<CommandSourceStack> context, SuggestionsBuilder build, boolean group) {
ServerLevel world = context.getSource().getLevel();
Claim claim = ClaimStorage.get(world).getClaimAt(new BlockPos(context.getSource().getPosition()));
Claim claim = ClaimStorage.get(world).getClaimAt(BlockPos.containing(context.getSource().getPosition()));
boolean admin = claim != null && claim.isAdminClaim();
List<String> allowedPerms = new ArrayList<>();
for (ClaimPermission perm : PermissionRegistry.getPerms()) {

View File

@ -133,7 +133,7 @@ public class BuySellHandler {
ItemEntity itemEntity = player.drop(toGive, false);
if (itemEntity != null) {
itemEntity.setNoPickUpDelay();
itemEntity.setOwner(player.getUUID());
itemEntity.setTarget(player.getUUID());
}
}
}

View File

@ -145,7 +145,7 @@ public class BlockInteractEvents {
if (owner instanceof ServerPlayer)
player = (ServerPlayer) owner;
} else if (entity instanceof ItemEntity) {
Entity owner = ((ServerLevel) world).getEntity(((ItemEntity) entity).getThrower());
Entity owner = ((ItemEntity) entity).getOwner();
if (owner instanceof ServerPlayer)
player = (ServerPlayer) owner;
}
@ -209,7 +209,7 @@ public class BlockInteractEvents {
return !claim.canInteract((ServerPlayer) owner, PermissionRegistry.TRAMPLE, pos, true);
}
} else if (entity instanceof ItemEntity) {
Entity owner = serverWorld.getEntity(((ItemEntity) entity).getThrower());
Entity owner = ((ItemEntity) entity).getOwner();
if (owner instanceof ServerPlayer) {
ClaimStorage storage = ClaimStorage.get(serverWorld);
IPermissionContainer claim = storage.getForPermissionCheck(pos);

View File

@ -22,6 +22,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.tags.DamageTypeTags;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
@ -188,7 +189,7 @@ public class EntityInteractEvents {
public static boolean preventDamage(Entity entity, DamageSource source) {
if (source.getEntity() instanceof ServerPlayer)
return attackSimple((ServerPlayer) source.getEntity(), entity, true) != InteractionResult.PASS;
else if (source.isExplosion() && !entity.level.isClientSide && !(entity instanceof ServerPlayer || entity instanceof Enemy)) {
else if (source.is(DamageTypeTags.IS_EXPLOSION) && !entity.level.isClientSide && !(entity instanceof ServerPlayer || entity instanceof Enemy)) {
IPermissionContainer claim = ClaimStorage.get((ServerLevel) entity.level).getForPermissionCheck(entity.blockPosition());
return claim != null && !claim.canInteract(null, PermissionRegistry.EXPLOSIONS, entity.blockPosition());
}

View File

@ -10,8 +10,11 @@ import io.github.flemmli97.flan.player.LogoutTracker;
import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.features.CaveFeatures;
import net.minecraft.data.worldgen.features.NetherFeatures;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
@ -20,6 +23,8 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.GrassBlock;
import net.minecraft.world.level.block.MossBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.NetherForestVegetationConfig;
import net.minecraft.world.level.levelgen.feature.configurations.TwistingVinesConfig;
import net.minecraft.world.level.levelgen.feature.configurations.VegetationPatchConfiguration;
@ -53,22 +58,33 @@ public class PlayerEvents {
if (!ClaimStorage.get(serverPlayer.getLevel()).getForPermissionCheck(pos).canInteract(serverPlayer, perm, pos, false))
return false;
int range = 0;
Registry<ConfiguredFeature<?, ?>> registry = serverPlayer.level.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE);
if (state.getBlock() instanceof MossBlock) {
VegetationPatchConfiguration cfg = CaveFeatures.MOSS_PATCH_BONEMEAL.value().config();
range = cfg.xzRadius.getMaxValue() + 1;
pos.set(pos.getX(), pos.getY() + cfg.verticalRange + 1, pos.getZ());
VegetationPatchConfiguration cfg = featureRange(registry, CaveFeatures.MOSS_PATCH_BONEMEAL, VegetationPatchConfiguration.class);
if (cfg != null) {
range = cfg.xzRadius.getMaxValue() + 1;
pos.set(pos.getX(), pos.getY() + cfg.verticalRange + 1, pos.getZ());
}
} else if (state.getBlock() instanceof GrassBlock) {
range = 4;
} else if (state.is(Blocks.CRIMSON_NYLIUM)) {
NetherForestVegetationConfig cfg = NetherFeatures.CRIMSON_FOREST_VEGETATION_BONEMEAL.value().config();
range = cfg.spreadWidth;
pos.set(pos.getX(), pos.getY() + cfg.spreadHeight + 1, pos.getZ());
NetherForestVegetationConfig cfg = featureRange(registry, NetherFeatures.CRIMSON_FOREST_VEGETATION_BONEMEAL, NetherForestVegetationConfig.class);
if (cfg != null) {
range = cfg.spreadWidth;
pos.set(pos.getX(), pos.getY() + cfg.spreadHeight + 1, pos.getZ());
}
} else if (state.is(Blocks.WARPED_NYLIUM)) {
NetherForestVegetationConfig cfg = NetherFeatures.WARPED_FOREST_VEGETATION_BONEMEAL.value().config();
NetherForestVegetationConfig cfg2 = NetherFeatures.NETHER_SPROUTS_BONEMEAL.value().config();
TwistingVinesConfig cfg3 = NetherFeatures.TWISTING_VINES_BONEMEAL.value().config();
range = Math.max(Math.max(cfg.spreadWidth, cfg2.spreadWidth), cfg3.spreadWidth());
int y = Math.max(Math.max(cfg.spreadHeight, cfg2.spreadHeight), cfg3.spreadHeight());
NetherForestVegetationConfig cfg = featureRange(registry, NetherFeatures.WARPED_FOREST_VEGETATION_BONEMEAL, NetherForestVegetationConfig.class);
NetherForestVegetationConfig cfg2 = featureRange(registry, NetherFeatures.NETHER_SPROUTS_BONEMEAL, NetherForestVegetationConfig.class);
TwistingVinesConfig cfg3 = featureRange(registry, NetherFeatures.TWISTING_VINES_BONEMEAL, TwistingVinesConfig.class);
int w1 = cfg == null ? 0 : cfg.spreadWidth;
int w2 = cfg2 == null ? 0 : cfg2.spreadWidth;
int w3 = cfg3 == null ? 0 : cfg3.spreadWidth();
int h1 = cfg == null ? 0 : cfg.spreadHeight;
int h2 = cfg2 == null ? 0 : cfg2.spreadHeight;
int h3 = cfg3 == null ? 0 : cfg3.spreadHeight();
range = Math.max(Math.max(w1, w2), w3);
int y = Math.max(Math.max(h1, h2), h3);
pos.set(pos.getX(), pos.getY() + y + 1, pos.getZ());
}
if (range > 0 && perm != null && !ClaimStorage.get(serverPlayer.getLevel()).canInteract(pos, range, serverPlayer, perm, false)) {
@ -94,4 +110,13 @@ public class PlayerEvents {
public static boolean canSculkTrigger(BlockPos pos, ServerPlayer player) {
return ClaimStorage.get(player.getLevel()).getForPermissionCheck(pos).canInteract(player, PermissionRegistry.SCULK, pos, false);
}
@SuppressWarnings("unchecked")
public static <T extends FeatureConfiguration> T featureRange(Registry<ConfiguredFeature<?, ?>> registry, ResourceKey<ConfiguredFeature<?, ?>> key, Class<T> clss) {
return registry.getHolder(key).map(r -> {
if (clss.isInstance(r.value().config()))
return (T) r.value().config();
return null;
}).orElse(null);
}
}

View File

@ -7,6 +7,8 @@ import io.github.flemmli97.flan.config.Config;
import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.ChatFormatting;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.StringTag;
import net.minecraft.network.chat.Component;
@ -102,6 +104,11 @@ public class ServerScreenHelper {
}
public static void playSongToPlayer(ServerPlayer player, SoundEvent event, float vol, float pitch) {
player.connection.send(
new ClientboundSoundPacket(BuiltInRegistries.SOUND_EVENT.wrapAsHolder(event), SoundSource.PLAYERS, player.position().x, player.position().y, player.position().z, vol, pitch, player.level.getRandom().nextLong()));
}
public static void playSongToPlayer(ServerPlayer player, Holder<SoundEvent> event, float vol, float pitch) {
player.connection.send(
new ClientboundSoundPacket(event, SoundSource.PLAYERS, player.position().x, player.position().y, player.position().z, vol, pitch, player.level.getRandom().nextLong()));
}

View File

@ -15,7 +15,7 @@ import java.util.function.BiFunction;
public class TeleportUtils {
public static BlockPos roundedBlockPos(Vec3 pos) {
return new BlockPos(pos);
return BlockPos.containing(pos);
}
public static Vec3 getTeleportPos(ServerPlayer player, Vec3 playerPos, ClaimStorage storage, int[] dim, BlockPos.MutableBlockPos bPos, BiFunction<Claim, BlockPos, Boolean> check) {

View File

@ -72,9 +72,7 @@ dependencies {
modCompileOnly "dev.ftb.mods:ftb-ranks-fabric:${rootProject.ftb_ranks}"
modRuntimeOnly "dev.ftb.mods:ftb-chunks-fabric:${rootProject.ftb_chunks}"
modRuntimeOnly "dev.ftb.mods:ftb-chunks-fabric:${rootProject.ftb_chunks}"
//modRuntimeOnly "dev.ftb.mods:ftb-chunks-fabric:${rootProject.ftb_chunks}"
//CompileOnly cause too many dependency
modCompileOnly goml_reserved
modCompileOnly include("com.jamieswhiteshirt:rtree-3i-lite-fabric:0.3.0")

View File

@ -4,7 +4,7 @@ import io.github.flemmli97.flan.SimpleRegistryWrapper;
import io.github.flemmli97.flan.fabric.FabricRegistryWrapper;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.Container;
import net.minecraft.world.WorldlyContainerHolder;
@ -25,22 +25,22 @@ public class CrossPlatformStuffImpl implements CrossPlatformStuff {
@Override
public SimpleRegistryWrapper<MobEffect> registryStatusEffects() {
return new FabricRegistryWrapper<>(Registry.MOB_EFFECT);
return new FabricRegistryWrapper<>(BuiltInRegistries.MOB_EFFECT);
}
@Override
public SimpleRegistryWrapper<Block> registryBlocks() {
return new FabricRegistryWrapper<>(Registry.BLOCK);
return new FabricRegistryWrapper<>(BuiltInRegistries.BLOCK);
}
@Override
public SimpleRegistryWrapper<Item> registryItems() {
return new FabricRegistryWrapper<>(Registry.ITEM);
return new FabricRegistryWrapper<>(BuiltInRegistries.ITEM);
}
@Override
public SimpleRegistryWrapper<EntityType<?>> registryEntities() {
return new FabricRegistryWrapper<>(Registry.ENTITY_TYPE);
return new FabricRegistryWrapper<>(BuiltInRegistries.ENTITY_TYPE);
}
@Override

View File

@ -26,6 +26,6 @@
],
"depends": {
"fabric": ">=0.57.0",
"minecraft": ">=1.19"
"minecraft": ">=1.19.4"
}
}

View File

@ -46,7 +46,7 @@ dependencies {
modCompileOnly "dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}"
modCompileOnly dicemcmm
modRuntimeOnly "dev.ftb.mods:ftb-chunks-forge:${rootProject.ftb_chunks}"
//modRuntimeOnly "dev.ftb.mods:ftb-chunks-forge:${rootProject.ftb_chunks}"
//CompileOnly cause dependencies
modCompileOnly "com.ldtteam:minecolonies:${rootProject.minecolonies}"
}

View File

@ -1,5 +1,5 @@
modLoader="javafml"
loaderVersion="[41,)"
loaderVersion="[45,)"
license="All rights reserved"
issueTrackerURL="https://github.com/Flemmli97/Flan/issues"
[[mods]]
@ -13,12 +13,12 @@ description='''Flan (Forge version): A serverside claiming mod'''
[[dependencies.flan]]
modId="minecraft"
mandatory=true
versionRange="[1.19,)"
versionRange="[1.19.4,)"
ordering="NONE"
side="BOTH"
[[dependencies.flan]]
modId="forge"
mandatory=true
versionRange="[41.1.0,)"
versionRange="[45.0.22,)"
ordering="NONE"
side="BOTH"

View File

@ -1,12 +1,12 @@
org.gradle.jvmargs=-Xmx2G
org.gradle.jvmargs=-Xmx3G
enabled_platforms=fabric,forge
minecraft_version=1.19.2
parchment_version=1.19.2:2022.11.27
minecraft_version=1.19.4
parchment_version=1.19.3:2023.03.12
# Forge Properties
forge_version=1.19.2-43.2.3
forge_version=1.19.4-45.0.22
# Fabric Properties
loader_version=0.14.11
loader_version=0.14.17
# Mod Properties
mod_version=1.8.4.1
@ -14,20 +14,20 @@ maven_group=io.github.flemmli97
archives_base_name=flan
# Dependencies
fabric_version=0.70.0+1.19.2
fabric_version=0.76.0+1.19.4
fabric_permissions_api=0.2-SNAPSHOT
dynmap_fabric=curse.maven:dynmap-59433:4512919
diamond_economy=curse.maven:diamondeconomy-534301:4453952
harvest_with_ease_fabric=curse.maven:harvestwithease-602171:4487309
octo_economy_api=com.github.ExcessiveAmountsOfZombies:OctoEconomyApi:5137175b1c
eights_economy=curse.maven:eightseconomy-559967:4520933
goml_reserved=curse.maven:goml-572651:4435272
minecolonies=1.19.4-1.0.1328-BETA
# Not updated
player_ability_lib=1.2.2
ftb_ranks=1900.1.9-build.42
ftb_chunks=1902.3.9-build.168
dicemcmm=curse.maven:dicemcmoney-406972:3827507
dynmap_fabric=curse.maven:dynmap-59433:3840510
diamond_economy=curse.maven:diamondeconomy-534301:3837320
harvest_with_ease_fabric=curse.maven:harvestwithease-602171:4442026
#
octo_economy_api=com.github.ExcessiveAmountsOfZombies:OctoEconomyApi:5137175b1c
eights_economy=curse.maven:eightseconomy-559967:3836124
goml_reserved=curse.maven:goml-572651:4105762
minecolonies=1.19.2-1.0.999-ALPHA
# Curse properties
curse_versions=1.19, 1.19.1, 1.19.2, Java 17