- 3
- 0
Доброго времени суток друзья. У меня стоит задача подключить к моду базу данных, и выводить из нее на экран игрока различные данные
Я ознакомился с тотуриалом на форуме а именно этот. Делал все как описано, делал все по своему, менял версию коннектора, менял способы включения его в проект, но все идет крахом. Клиент то вылетает, то пишет что не найден драйвер, то еще что то, то запрос конyект возвращает null.
Пожалуйста ознакомьтесь с кодом, и помогите разобраться что не так. может у кого то есть рабочий пример?
к слову я делаю запросы со стороны клиента, это возможно не правильно, но пока пытаюсь просто разобраться, в SQL я не новичек, но java для меня темный лес пока что. Все остальное у меня получается, вот стоит проблема только с JDBC.
gradle build на данный момент
а вот весь класс в котором я пытаюсь реализовать банальное подключение к БД
тапками не кидайтесь, я уже перепробовал кучу способов запустить этот код, и с сервера, и без него, и в событии игрок зашел на сервер, и при инициализации мода. что я только не пробовал, помогите пожалуйста найти решение, ткните носом откуда этот код должен запускаться
При всем этом, данный код, корректно работает вне проекта
Я ознакомился с тотуриалом на форуме а именно этот. Делал все как описано, делал все по своему, менял версию коннектора, менял способы включения его в проект, но все идет крахом. Клиент то вылетает, то пишет что не найден драйвер, то еще что то, то запрос конyект возвращает null.
Пожалуйста ознакомьтесь с кодом, и помогите разобраться что не так. может у кого то есть рабочий пример?
к слову я делаю запросы со стороны клиента, это возможно не правильно, но пока пытаюсь просто разобраться, в SQL я не новичек, но java для меня темный лес пока что. Все остальное у меня получается, вот стоит проблема только с JDBC.
gradle build на данный момент
sourse:
buildscript {
repositories {
// These repositories are only for Gradle plugins, put any other repositories in the repository block further below
maven { url = 'https://maven.minecraftforge.net' }
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
classpath 'mysql:mysql-connector-java:5.1.44'
}
}
**********************
dependencies {
minecraft 'net.minecraftforge:forge:1.18.2-40.0.13'
implementation group: 'mysql', name: 'mysql-connector-java', version: '5.1.44'
}
а вот весь класс в котором я пытаюсь реализовать банальное подключение к БД
тапками не кидайтесь, я уже перепробовал кучу способов запустить этот код, и с сервера, и без него, и в событии игрок зашел на сервер, и при инициализации мода. что я только не пробовал, помогите пожалуйста найти решение, ткните носом откуда этот код должен запускаться
item unteact:
package com.bodryk.gothic.item;
import net.minecraft.world.level.Level;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.InteractionHand;
import java.sql.*;
public class QweItem extends Item {
private static final String user = "ee";
private static final String password = "ee";
private static final String url = "jdbc:mysql://localhost:3306/gothic";
public static Connection connection;
public static Statement statement = null;
public static ResultSet resSet;
public QweItem() {
super(new Item.Properties().tab(CreativeModeTab.TAB_MISC).stacksTo(64).rarity(Rarity.COMMON));
}
@Override
public int getUseDuration(ItemStack itemstack) {
return 0;
}
@Override
public InteractionResultHolder<ItemStack> use(Level world, Player entity, InteractionHand hand){
InteractionResultHolder<ItemStack> ar = super.use(world, entity, hand);
ItemStack itemstack = ar.getObject();
double x = entity.getX();
double y = entity.getY();
double z = entity.getZ();
try {
sqlcod();
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
return ar;
}
public void sqlcod() throws SQLException, ClassNotFoundException {
String user = "u73600_ClYjqLjJ56";
String pass = "YKiN@5Tyrb=qDf^Al8fWs2y4";
String url = "jdbc:mysql://mysql2.joinserver.xyz:3306/s73600_gothic";
Connection connection;
Statement statement;
ResultSet resSet;
System.out.println(user);
System.out.println(pass);
System.out.println(url);
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url, user, pass);
statement = connection.createStatement();
System.out.println("СТАТМЕНТ СОЗДАН НО ЭТО НЕ ТОЧНО");
resSet = statement.executeQuery("select * from players");
resSet.next();
System.out.println(resSet.getString("name"));
statement.close();
connection.close();
}
}
console:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at [email protected]/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:134)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at [email protected]/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:134)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at TRANSFORMER/[email protected]/com.bodryk.gothic.item.QweItem.sqlcod(QweItem.java:63)
at TRANSFORMER/[email protected]/com.bodryk.gothic.item.QweItem.use(QweItem.java:42)
at TRANSFORMER/[email protected]/net.minecraft.world.item.ItemStack.use(ItemStack.java:252)
at TRANSFORMER/[email protected]/net.minecraft.server.level.ServerPlayerGameMode.useItem(ServerPlayerGameMode.java:293)
at TRANSFORMER/[email protected]/net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItem(ServerGamePacketListenerImpl.java:1017)
at TRANSFORMER/[email protected]/net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:23)
at TRANSFORMER/[email protected]/net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:7)
at TRANSFORMER/[email protected]/net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:22)
at TRANSFORMER/[email protected]/net.minecraft.server.TickTask.run(TickTask.java:17)
at TRANSFORMER/[email protected]/net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:143)
at TRANSFORMER/[email protected]/net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:22)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:799)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:164)
at TRANSFORMER/[email protected]/net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:116)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:782)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:776)
at TRANSFORMER/[email protected]/net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:126)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:762)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:689)
at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:261)
at java.base/java.lang.Thread.run(Thread.java:833)
При всем этом, данный код, корректно работает вне проекта