Начинающий
- Статус
- Оффлайн
- Регистрация
- 23 Дек 2024
- Сообщения
- 71
- Реакции
- 1
Подарочек на новый год
Java:
public class NoInteract extends Feature {
private final Map<BooleanSetting, Predicate<Block>> blocks;
private final BooleanSetting stand;
public NoInteract() {
this.stand = new BooleanSetting("Стойки для брони", true);
this.blocks = new LinkedHashMap<BooleanSetting, Predicate<Block>>() {{
put(new BooleanSetting("Сундуки", true), block -> block.getDescriptionId().contains("chest"));
put(new BooleanSetting("Двери", true), block -> block.getDescriptionId().contains("door"));
put(new BooleanSetting("Воронки", true), block -> block.getDescriptionId().contains("hopper"));
put(new BooleanSetting("Кнопки", true), block -> block.getDescriptionId().contains("button"));
put(new BooleanSetting("Раздатчики", true), block -> block.getDescriptionId().contains("dispenser"));
put(new BooleanSetting("Нотные блоки", true), block -> block.getDescriptionId().contains("note"));
put(new BooleanSetting("Верстаки", true), block -> block.getDescriptionId().contains("crafting_table"));
put(new BooleanSetting("Люки", true), block -> block.getDescriptionId().contains("trapdoor"));
put(new BooleanSetting("Печки", true), block -> block.getDescriptionId().contains("furnace"));
put(new BooleanSetting("Калитки", true), block -> block.getDescriptionId().contains("fence_gate"));
put(new BooleanSetting("Наковальни", true), block -> block.getDescriptionId().contains("anvil"));
put(new BooleanSetting("Рычаги", true), block -> block.getDescriptionId().contains("lever"));
}};
List<Setting> sets = new ArrayList<>(blocks.keySet());
sets.add(stand);
addSettings(sets.toArray(new Setting[0]));
}
@SubscribeEvent
public void onInteract(PlayerInteractEvent event) {
if (event instanceof PlayerInteractEvent.RightClickBlock) {
if (blocks.entrySet().stream().anyMatch(entry -> entry.getKey().isEnabled() && entry.getValue().test(mc.level.getBlockState(event.getPos()).getBlock()))) {
event.setCanceled(true);
}
}
}
@SubscribeEvent
public void onEntityInteract(PlayerInteractEvent.EntityInteract event) {
if (stand.isEnabled() && event.getTarget() instanceof ArmorStandEntity) {
event.setCanceled(true);
}
}
}
Последнее редактирование: