- 122
- 4
- 6
После небольших махинаций с "терра пластиной" и идеей крафта при выбрасывании я создал небольшой рабочий код
Но я бы хотел улучшить данную систему сделав компактнее, удобнее и чтобы крафты было просто добавлять а также было видно в jei.
К сожалению я не так долго в сфере моддинга по этому не знаю многих тонкостей. И в связи с этим прошу дать совет, подсказку или часть кода чтобы я мог понять, как создавать и писать данные части. Заранее спасибо.
Java:
public class TileEntityAlchemicalPedestal extends TileEntity implements ITickable {
private int time = 0;
@Override
public void update() {
if (!world.isRemote) {
List<EntityItem> items = getItems();
if (craft_1(items)) {
time++;
Random r = new Random();
double dx = (r.nextFloat() - 0.4d) * 0.25d;
double dy = (r.nextFloat() - 0.4d) * 0.25d;
double dz = (r.nextFloat() - 0.4d) * 0.25d;
((WorldServer) world).spawnParticle(EnumParticleTypes.ENCHANTMENT_TABLE, pos.getX() + 0.5f, pos.getY() + 2.5f, pos.getZ() + 0.5f, 16, dx, dy, dz, 0.003f, new int[0]);
EntityItem item = items.get(0);
if (time >= 120) for (EntityItem otherItem : items) {
if (otherItem != item) otherItem.setDead();
else {
item.motionY = 0.3f;
item.setItem(new ItemStack(BlocksInit.AWAKENED_OBSIDIAN, 1));
time = 0;
}
}
}
}
}
List<EntityItem> getItems() {
return world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(pos, pos.add(1, 2, 1)));
}
public boolean craft_1(List<EntityItem> items) {
for (EntityItem item_0 : items) for (EntityItem item_1 : items) for (EntityItem item_2 : items) for (EntityItem item_3 : items) {
ItemStack gs = item_0.getItem();
ItemStack ns = item_1.getItem();
ItemStack ee = item_2.getItem();
ItemStack o = item_3.getItem();
if ((gs.getItem() == new ItemStack(Blocks.GLOWSTONE).getItem() && gs.getCount() == 1) &&
(ns.getItem() == new ItemStack(Items.NETHER_STAR).getItem() && ns.getCount() == 1) &&
(ee.getItem() == new ItemStack(Items.ENDER_EYE).getItem() && ee.getCount() == 6) &&
(o.getItem() == new ItemStack(Blocks.OBSIDIAN).getItem() && o.getCount() == 1)) return true;
}
return false;
}
public NBTTagCompound writeToNBT(NBTTagCompound nbt) { return super.writeToNBT(nbt); }
public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); }
}
К сожалению я не так долго в сфере моддинга по этому не знаю многих тонкостей. И в связи с этим прошу дать совет, подсказку или часть кода чтобы я мог понять, как создавать и писать данные части. Заранее спасибо.