Получение контейнера блока-контейнера

Версия Minecraft
1.7.10
Здравствуйте.

У нас есть координаты блока и необходимо получить его контейнер , в котором находится игрок или игроки, без использования плеера, что бы в последствии при необходимости насильно закрыть его. 
Как это можно реализовать?
 
Да, есть один дюп, который хотим пофиксить.
Есть одна не приятная механика, меняет два блока местами, и если это инвентари, то когда они меняются гуишка не закрывается. Можно лечить в каждом конкретном инвентаре, но замучаешься найти и пофиксить все блоки, вот и решили пытаться закрывать игрокам гуишки перед перемещением, но вот в поисках уперлись в получение контейнера, чтобы иметь список игроков.


В общем первым сообщением все сказано, нужно определить всех игроков открывших инвентарь любого блока находящегося на координатах, чтобы по том всем насильно закрыть гуи.
 
2,505
81
397
Agravaine написал(а):
В контейнере есть TileEntity, достаньте как-то его. А в TileEntity есть нужные сам координаты. Их-то и сравнивайте.
Не везде есть тайл. В ContainerChest, например, нету.
К дефолтных контейнерам придется подкапываться почти к каждому индивудуально. Для кастомных контейнеров можно попробовать всунуть хук в FMLNetworkHandler#openGui. Там будут координаты. Реализовать то, что вы хотите будет проблематично.
Я бы, наверное, попробовал перехватывать все моменты создания контейнеров и засовывал бы их в WeakHashMap<Container, Координаты>
 
2,505
81
397
Вся инфа по ним куда-то испарилась :) Сейчас попробую описать.

Инструкция по использованию Access Transformers (>= 1.7.10)

1. Создать папку src/main/resourses/META-INF.
2. Создать в ней файл <modid>_at.cfg.
3. Заполнить файл:
Код:
# Это комментарий

# Все поля в классе Item будут публичными
public net.minecraft.item.Item *

# Все методы в классе Item будут публичными (опасно, может не собраться из-за того, что в производных классах эти методы будут приватными)
public net.minecraft.item.Item *()

#
# Следущие скопипащены из TinkersConstruct
# Если указывать поля и методы по одиночке, то процесс сборки не будет столь долгим, но это не точно
#

# Какое-то конкретное поле
public net.minecraft.item.ItemPickaxe field_150915_c

# Какой-то конкретный метод
public net.minecraft.entity.monster.EntitySlime func_70799_a(I)V

# Какой-то конкретный метод
protected net.minecraft.entity.item.EntityItemFrame func_110131_b(Lnet/minecraft/item/ItemStack;)V
4. Добавить в build.gradle
Код:
jar {
    manifest {
        attributes 'FMLAT': '<modid>_at.cfg'
    }
}
Если 1.10.2, то еще и это:
Код:
artifacts {
    archives deobfJar
}
5. Пересобрать проект.
Код:
gradlew clean setupDecompWorkspace --refresh-dependencies
 
7,099
324
1,510
Dahaka, у меня в idea пишет:
Build script error, unsupported Gradle DSL method found: 'jar()'! Possible causes could be: - you are using Gradle version where the method is absent (Fix Gradle settings) - you didn't apply Gradle plugin which provides the method (Apply Gradle plugin) - or there is a mistake in a build script (Goto source)
Что делать?


Решено, вставил apply plugin "java"
 
Сверху