Самые тупые вопросы в мире

(1.12.2)
Как создать комманду с аргументами пример: /say arg1
Как получить ип игрока и его имя при заходе на сервер ?
 

GoogleTan

Картошка :3
1,354
43
310
1. В команде принимается массив аргументов
2. есть событие логина игрока
 
Можно пример создания комманды и ее регистрации ?
2 А можно подробнее какой это event
 

GoogleTan

Картошка :3
1,354
43
310
1. Наследуешь команду от CommandBase. Регаешь через:
Java:
    @Mod.EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        event.registerServerCommand(new CommanClassName());
    }

2. PlayerLoggedInEvent
 
Я все еше не могу понять как тут взять ip adress
Java:
public void onPlayerLogged (PlayerLoggedInEvent e) {EntityPlayer p = (EntityPlayer) e.player; p.getName();}
 

GoogleTan

Картошка :3
1,354
43
310
А зачем тебе? Вообще не уверена что ты имеешь право юзать эту инфу просто так
 
Я пытаюсь привязать имя игрока и ип в mysql базу данных тк на сервере нету комманды /register
 

GoogleTan

Картошка :3
1,354
43
310
Используй уже готовые плагины регистрации. Если надо модифицируй их
 
Напишите мне формулу поиска dx dy dz (Я помню она была в mccreator но он у меня уже давно удален и качать я его не хочю :D)
Вобщем надо найти блок камня в квадратном радиусе (dx dy dz) От координат x=0 , y=0 , z=0 , dx = 32 , dy = 32 , dz = 32 (P.S Я тут вспомнил структурные блоки тоже используют dx dy dz или его подобие)
 
Новая проблема: Как исправить ошибку
Java:
[Server thread/INFO] [STDERR]: [com.example.examplemod.ExampleMod:MySQL:177]: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
(Похоже это что то связанное с драйвером, но как его установить на eclipse ?
Код который ее вызывает
Java:
    public void MySQL(String url, String dbName, String user, String pass) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(
                    "jdbc:mysql://" + url + "/" + dbName + "?useUnicode=true&characterEncoding=utf8&autoReconnect=true",
                    user, pass);
            statmt = conn.createStatement();
            statmt.execute(
                    "CREATE TABLE IF NOT EXISTS `users` (`user` varchar(255) PRIMARY KEY,`time` varchar(255) NOT NULL)");
            statmt.execute(
                    "CREATE TABLE IF NOT EXISTS `NameIp` (`name` varchar(255) PRIMARY KEY,`ip` varchar(255) NOT NULL)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
(P.S В итоге что то с названием mysql-connector-java-8.0.27.jar Добавилось в Referenced Libiraries Но при попытки создать мод через build выводит ошибку
Task :compileJava FAILED
C:\Users\╬ёэютэющ\Desktop\System\src\main\java\com\example\examplemod\ExampleMod.java:18: error: package com.mysql.cj does not exist
import com.mysql.cj.jdbc;

(Каким-то магическим образом, я выяснил что при запуске RunServer через eclips все работает, зато при gradlew build Вылезает та ошибка -__-)


Примерно так это выглядит Но почему-то это работает только в eclipse run server:
package com.example.examplemod;

import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import com.mysql.cj.jdbc.Driver;

import org.apache.logging.log4j.Logger;

import com.ibm.icu.util.BytesTrie.Result;



@Mod(modid = ExampleMod.MODID, name = ExampleMod.NAME, version = ExampleMod.VERSION, serverSideOnly = true, acceptedMinecraftVersions = "[I]", acceptableRemoteVersions = "[/I]", acceptableSaveVersions = "*")
public class ExampleMod
{
 
 
 
    public static final String MODID = "examplemod";
    public static final String NAME = "Example Mod";
    public static final String VERSION = "1.0";
 
 
 
    private Connection conn;
    private Statement statmt;
    private PreparedStatement preparedStatement = null;

    private static Logger logger;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
        MinecraftForge.EVENT_BUS.register(this);
        logger = event.getModLog();
    }

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        MySQL("de1-db.falix.gg:3306", "s420032_osn", "u420032_JCOBHivPZO", "d2INAJk3PomSc.jht.TN7sw4");
        // some example code
    }
 
 
 
 
 
 

 
 
    @SubscribeEvent
    public void onPlayerLogged (PlayerLoggedInEvent e) {
    EntityPlayerMP p = (EntityPlayerMP) e.player;
 
    ArrayList<String> v1 = GetBungeeLoginResultNameIp(p.getName());
    if (v1 != null) {
        if (v1.get(0).equals(p.getName())) {
            SetLoginResultNameIp(v1.get(0), v1.get(1));

            }
        }
    else {
        e.setCanceled(true);
    }
 
     }

 

    public void MySQL(String url, String dbName, String user, String pass) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(
                    "jdbc:mysql://" + url + "/" + dbName + "?useUnicode=true&characterEncoding=utf8&autoReconnect=true",
                    user, pass);
            statmt = conn.createStatement();
            statmt.execute(
                    "CREATE TABLE IF NOT EXISTS [ICODE]users[/ICODE] ([ICODE]user[/ICODE] varchar(255) PRIMARY KEY,[ICODE]time[/ICODE] varchar(255) NOT NULL)");
            statmt.execute(
                    "CREATE TABLE IF NOT EXISTS [ICODE]NameIp[/ICODE] ([ICODE]name[/ICODE] varchar(255) PRIMARY KEY,[ICODE]ip[/ICODE] varchar(255) NOT NULL)");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
        public void SetLoginResultNameIp(String name, String ip) {
        try {
            PreparedStatement e = conn
                    .prepareStatement("INSERT INTO NameIp (name, ip) VALUES (?,?);");
            e.setString(1, name);
            e.setString(2, ip);
            e.executeUpdate();
         
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
P.S.S Даже базу данных с паролем вам оставил ;)
 

Вложения

  • Снимок экрана (25).png
    Снимок экрана (25).png
    177.2 KB · Просмотры: 6
  • Снимок экрана (27).png
    Снимок экрана (27).png
    210.7 KB · Просмотры: 6
  • Снимок экрана (29).png
    Снимок экрана (29).png
    192.6 KB · Просмотры: 6
Последнее редактирование:
Сверху