[1.7.1.0] Выполнение команды через блок

Версия Minecraft
1.7.10
15
0
Приветики еще раз, вообщееем. Я и мой друг по парте, решили замутить блок вырубающий дождь и включающий день в мире. Пересмотрев кучу гайдов(1), и спросив у *профессионала* мы ответ не нашли. Кто может помочь, отпишите здесь :3 P.S. нужно чтобы команды выполнялись на сервере а не в одиночке :3
Код:
package ru.gorodilov.baramod.blocks;

import java.util.List;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import ru.gorodilov.baramod.Main;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockBaraw extends Block {
       
    public BlockBaraw(String name, String texture) {
        super(Material.iron);
        this.setBlockName(name);
        this.setBlockTextureName(Main.MODID + ":cmdsblocks/" +texture);
        this.setCreativeTab(Main.tabBaramodDesignBlocks);
        this.setHardness(3.0F);
        this.setHarvestLevel("axe", 1);
        GameRegistry.registerBlock(this, name);
    }

    public boolean onBlockActivated(World world, int p2, int p3, int p4, EntityPlayer player, int p6, float p7, float p8, float p9) {
        MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "weather clear");
        return true;
    }

}
 

timaxa007

Модератор
5,831
409
672
блок вырубающий дождь и включающий день в мире
Для этого не обязательно выполнять команду. Можно-же и использовать код из этих команд.
Java:
        WorldInfo worldinfo = world.getWorldInfo();
        worldinfo.setRainTime(0);
        worldinfo.setThunderTime(0);
        worldinfo.setRaining(false);
        worldinfo.setThundering(false);

world.setWorldTime(1000L);
 

timaxa007

Модератор
5,831
409
672
именно команду
Типа ты использовал это:
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "weather clear");
Делаешь подобные команды, а то что у тебя не работает, не понятно из-за чего. У меня подобное работало как надо.
 
917
22
332
FMLCommonHandler...
В общем у меня среды на 1.7.10 нет, есть только сорцы, код написал "на коленке", за работоспособность не отвечаю...
Java:
    @Override
    public boolean onBlockActivated(World world, int p2, int p3, int p4, EntityPlayer player, int p6, float p7, float p8, float p9) {
        if(world.isRemote) return true;
       
        //Получение сервера
        MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance();
        //Если игрок НЕ нажал Shift
        if(!player.isSneaking()) {
            //Установка ясной погоды если идёт дождь
            if(world.isRaining()) server.getCommandManager().executeCommand(server, "weather clear");
            //И установка дождя, если ясная погода
            else server.getCommandManager().executeCommand(server, "weather rain");
        }
        //Если нажал Shift
        else {
            //Если ночь, то устанавливаем день
            if(!world.isDaytime()) server.getCommandManager().executeCommand(server, "time set 5000");
            //Если день, то устанавливаем ночь
            else server.getCommandManager().executeCommand(server, "time set night");
        }
       
        return true;
    }
 
Последнее редактирование:
1,057
50
234
server.getCommandManager().executeCommand(server, world.isDaytime() ? "time set night" : "time set 0");
 
Сверху