add ignoredEntities config and modid support for ignoredBlocks and ignoredEntities
This commit is contained in:
parent
44a4767612
commit
73d944799c
@ -3,6 +3,7 @@ package io.github.flemmli97.flan;
|
|||||||
import me.shedaniel.architectury.annotations.ExpectPlatform;
|
import me.shedaniel.architectury.annotations.ExpectPlatform;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.entity.effect.StatusEffect;
|
import net.minecraft.entity.effect.StatusEffect;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
|
||||||
@ -30,6 +31,11 @@ public class CrossPlatformStuff {
|
|||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExpectPlatform
|
||||||
|
public static SimpleRegistryWrapper<EntityType<?>> registryEntities() {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
|
||||||
@ExpectPlatform
|
@ExpectPlatform
|
||||||
public static boolean isInventoryTile(BlockEntity blockEntity) {
|
public static boolean isInventoryTile(BlockEntity blockEntity) {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
|
@ -35,7 +35,9 @@ public class Config {
|
|||||||
public int defaultClaimDepth = 10;
|
public int defaultClaimDepth = 10;
|
||||||
public boolean lenientBlockEntityCheck;
|
public boolean lenientBlockEntityCheck;
|
||||||
public List<String> ignoredBlocks = new ArrayList<>();
|
public List<String> ignoredBlocks = new ArrayList<>();
|
||||||
public List<String> ignoredEntityTypes = new ArrayList<>();
|
public List<String> ignoredEntityTypes = Lists.newArrayList(
|
||||||
|
"corpse:corpse"
|
||||||
|
);
|
||||||
public List<String> blockEntityTagIgnore = Lists.newArrayList(
|
public List<String> blockEntityTagIgnore = Lists.newArrayList(
|
||||||
"IsDeathChest", //vanilla death chest
|
"IsDeathChest", //vanilla death chest
|
||||||
"gunpowder.owner" //gunpowder
|
"gunpowder.owner" //gunpowder
|
||||||
|
@ -120,7 +120,8 @@ public class BlockInteractEvents {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean alwaysAllowBlock(Identifier id, BlockEntity blockEntity) {
|
public static boolean alwaysAllowBlock(Identifier id, BlockEntity blockEntity) {
|
||||||
return ConfigHandler.config.ignoredBlocks.contains(id.toString())
|
return ConfigHandler.config.ignoredBlocks.contains(id.getNamespace())
|
||||||
|
|| ConfigHandler.config.ignoredBlocks.contains(id.toString())
|
||||||
|| (blockEntity != null
|
|| (blockEntity != null
|
||||||
&& ConfigHandler.config.blockEntityTagIgnore.stream().anyMatch(blockEntity.toTag(new CompoundTag())::contains));
|
&& ConfigHandler.config.blockEntityTagIgnore.stream().anyMatch(blockEntity.toTag(new CompoundTag())::contains));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package io.github.flemmli97.flan.event;
|
package io.github.flemmli97.flan.event;
|
||||||
|
|
||||||
|
import io.github.flemmli97.flan.CrossPlatformStuff;
|
||||||
import io.github.flemmli97.flan.api.data.IPermissionContainer;
|
import io.github.flemmli97.flan.api.data.IPermissionContainer;
|
||||||
import io.github.flemmli97.flan.api.permission.ClaimPermission;
|
import io.github.flemmli97.flan.api.permission.ClaimPermission;
|
||||||
import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
|
import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
|
||||||
@ -43,6 +44,7 @@ import net.minecraft.server.world.ServerWorld;
|
|||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.collection.DefaultedList;
|
import net.minecraft.util.collection.DefaultedList;
|
||||||
import net.minecraft.util.hit.BlockHitResult;
|
import net.minecraft.util.hit.BlockHitResult;
|
||||||
import net.minecraft.util.hit.EntityHitResult;
|
import net.minecraft.util.hit.EntityHitResult;
|
||||||
@ -105,7 +107,10 @@ public class EntityInteractEvents {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canInteract(Entity entity) {
|
public static boolean canInteract(Entity entity) {
|
||||||
return entity.getScoreboardTags().stream().anyMatch(ConfigHandler.config.entityTagIgnore::contains);
|
Identifier id = CrossPlatformStuff.registryEntities().getIDFrom(entity.getType());
|
||||||
|
return ConfigHandler.config.ignoredEntityTypes.contains(id.getNamespace())
|
||||||
|
|| ConfigHandler.config.ignoredEntityTypes.contains(id.toString())
|
||||||
|
|| entity.getScoreboardTags().stream().anyMatch(ConfigHandler.config.entityTagIgnore::contains);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean projectileHit(ProjectileEntity proj, HitResult res) {
|
public static boolean projectileHit(ProjectileEntity proj, HitResult res) {
|
||||||
|
@ -6,6 +6,7 @@ import net.fabricmc.loader.api.FabricLoader;
|
|||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.InventoryProvider;
|
import net.minecraft.block.InventoryProvider;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.entity.effect.StatusEffect;
|
import net.minecraft.entity.effect.StatusEffect;
|
||||||
import net.minecraft.inventory.Inventory;
|
import net.minecraft.inventory.Inventory;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
@ -40,6 +41,10 @@ public class CrossPlatformStuffImpl {
|
|||||||
return new FabricRegistryWrapper<>(Registry.ITEM);
|
return new FabricRegistryWrapper<>(Registry.ITEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SimpleRegistryWrapper<EntityType<?>> registryEntities() {
|
||||||
|
return new FabricRegistryWrapper<>(Registry.ENTITY_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isInventoryTile(BlockEntity blockEntity) {
|
public static boolean isInventoryTile(BlockEntity blockEntity) {
|
||||||
return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider;
|
return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import io.github.flemmli97.flan.SimpleRegistryWrapper;
|
|||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.InventoryProvider;
|
import net.minecraft.block.InventoryProvider;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.entity.effect.StatusEffect;
|
import net.minecraft.entity.effect.StatusEffect;
|
||||||
import net.minecraft.inventory.Inventory;
|
import net.minecraft.inventory.Inventory;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
@ -32,6 +33,10 @@ public class CrossPlatformStuffImpl {
|
|||||||
return new ForgeRegistryWrapper<>(ForgeRegistries.ITEMS);
|
return new ForgeRegistryWrapper<>(ForgeRegistries.ITEMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SimpleRegistryWrapper<EntityType<?>> registryEntities() {
|
||||||
|
return new ForgeRegistryWrapper<>(ForgeRegistries.ENTITIES);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isInventoryTile(BlockEntity blockEntity) {
|
public static boolean isInventoryTile(BlockEntity blockEntity) {
|
||||||
return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider || blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent();
|
return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider || blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user