mirror of https://github.com/Minestom/Minestom.git
Moved LWJGL demo code to https://github.com/Minestom/LWJGL-Example
This commit is contained in:
parent
214fa4c808
commit
6d14e16dac
|
@ -2,3 +2,5 @@
|
|||
|
||||
Here is all LWJGL-related code in Minestom.
|
||||
Accessible when using "lwjgl" as an optional dependency in Gradle when declaring Minestom as a dependency
|
||||
|
||||
Go to [LWJGL Minestom Example](https://github.com/Minestom/LWJGL-Example) to see in details how to use.
|
|
@ -1,143 +0,0 @@
|
|||
package fr.themode.demo.map;
|
||||
|
||||
import fr.themode.demo.Main;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.event.player.PlayerSpawnEvent;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
import net.minestom.server.item.metadata.MapMeta;
|
||||
import net.minestom.server.map.framebuffers.GLFWFramebuffer;
|
||||
import net.minestom.server.map.framebuffers.Graphics2DFramebuffer;
|
||||
import net.minestom.server.network.packet.server.play.MapDataPacket;
|
||||
import net.minestom.server.timer.SchedulerManager;
|
||||
import net.minestom.server.utils.time.TimeUnit;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
import static org.lwjgl.opengl.GL11.*;
|
||||
|
||||
public class MapAnimationDemo {
|
||||
|
||||
public static final int MAP_ID = 1;
|
||||
public static final int OPENGL_MAP_ID = 2;
|
||||
public static final int OPENGL2_MAP_ID = 3;
|
||||
|
||||
private static final Graphics2DFramebuffer framebuffer = new Graphics2DFramebuffer();
|
||||
private static final GLFWFramebuffer glfwFramebuffer = new GLFWFramebuffer();
|
||||
private static final GLFWFramebuffer glfwFramebuffer2 = new GLFWFramebuffer();
|
||||
|
||||
public static void init() {
|
||||
SchedulerManager scheduler = MinecraftServer.getSchedulerManager();
|
||||
scheduler.buildTask(MapAnimationDemo::tick).repeat(16, TimeUnit.MILLISECOND).schedule();
|
||||
|
||||
MinecraftServer.getConnectionManager().addPlayerInitialization(player -> {
|
||||
player.addEventCallback(PlayerSpawnEvent.class, event -> {
|
||||
ItemStack map = new ItemStack(Material.FILLED_MAP, (byte) 1);
|
||||
map.setItemMeta(new MapMeta(MAP_ID));
|
||||
player.getInventory().addItemStack(map);
|
||||
|
||||
ItemStack map2 = new ItemStack(Material.FILLED_MAP, (byte) 1);
|
||||
map2.setItemMeta(new MapMeta(OPENGL_MAP_ID));
|
||||
player.getInventory().addItemStack(map2);
|
||||
|
||||
ItemStack map3 = new ItemStack(Material.FILLED_MAP, (byte) 1);
|
||||
map3.setItemMeta(new MapMeta(OPENGL2_MAP_ID));
|
||||
player.getInventory().addItemStack(map3);
|
||||
});
|
||||
});
|
||||
|
||||
glfwFramebuffer.setupRenderLoop(16, TimeUnit.MILLISECOND, () -> {
|
||||
glClearColor(0f, 0f, 0f, 1f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glBegin(GL_TRIANGLES);
|
||||
|
||||
glVertex2f(0, -0.75f);
|
||||
glColor3f(1f, 0f, 0f);
|
||||
|
||||
glVertex2f(0.75f, 0.75f);
|
||||
glColor3f(0f, 1f, 0f);
|
||||
|
||||
glVertex2f(-0.75f, 0.75f);
|
||||
glColor3f(0f, 0f, 1f);
|
||||
|
||||
glEnd();
|
||||
});
|
||||
|
||||
glfwFramebuffer2.setupRenderLoop(16, TimeUnit.MILLISECOND, () -> {
|
||||
glClearColor(0f, 1f, 0f, 1f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glBegin(GL_TRIANGLES);
|
||||
|
||||
glVertex2f(0, -0.75f);
|
||||
glColor3f(1f, 0f, 0f);
|
||||
|
||||
glVertex2f(0.75f, 0.75f);
|
||||
glColor3f(0f, 1f, 0f);
|
||||
|
||||
glVertex2f(-0.75f, 0.75f);
|
||||
glColor3f(0f, 0f, 1f);
|
||||
|
||||
glEnd();
|
||||
});
|
||||
}
|
||||
|
||||
private static float time = 0f;
|
||||
private static long lastTime = System.currentTimeMillis();
|
||||
|
||||
public static void tick() {
|
||||
Graphics2D renderer = framebuffer.getRenderer();
|
||||
renderer.setColor(Color.BLACK);
|
||||
renderer.clearRect(0, 0, 128, 128);
|
||||
renderer.setColor(Color.WHITE);
|
||||
renderer.drawString("Hello from", 0, 10);
|
||||
renderer.drawString("Graphics2D!", 0, 20);
|
||||
|
||||
long currentTime = System.currentTimeMillis();
|
||||
long l = currentTime / 60;
|
||||
if(l % 2 == 0) {
|
||||
renderer.setColor(Color.RED);
|
||||
}
|
||||
renderer.fillRect(128-10, 0, 10, 10);
|
||||
|
||||
renderer.setColor(Color.GREEN);
|
||||
float dt = (currentTime-lastTime)/1000.0f;
|
||||
lastTime = currentTime;
|
||||
time += dt;
|
||||
float speed = 10f;
|
||||
int x = (int) (Math.cos(time*speed) * 10 + 64) - 25;
|
||||
int y = (int) (Math.sin(time*speed) * 10 + 64) - 10;
|
||||
renderer.fillRoundRect(x, y, 50, 20, 10, 10);
|
||||
|
||||
renderer.setColor(Color.ORANGE);
|
||||
renderer.drawString("Hi :-)", x+16, y+15);
|
||||
|
||||
MapDataPacket mapDataPacket = new MapDataPacket();
|
||||
mapDataPacket.mapId = MAP_ID;
|
||||
framebuffer.preparePacket(mapDataPacket);
|
||||
MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(p -> {
|
||||
p.getPlayerConnection().sendPacket(mapDataPacket);
|
||||
});
|
||||
|
||||
mapDataPacket.mapId = OPENGL_MAP_ID;
|
||||
glfwFramebuffer.preparePacket(mapDataPacket);
|
||||
MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(p -> {
|
||||
p.getPlayerConnection().sendPacket(mapDataPacket);
|
||||
});
|
||||
|
||||
mapDataPacket.mapId = OPENGL2_MAP_ID;
|
||||
glfwFramebuffer2.preparePacket(mapDataPacket);
|
||||
MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(p -> {
|
||||
p.getPlayerConnection().sendPacket(mapDataPacket);
|
||||
});
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
MinecraftServer.init();
|
||||
|
||||
MinecraftServer.getCommandManager().register(new TestItemFrame());
|
||||
init();
|
||||
Main.main(args);
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package fr.themode.demo.map;
|
||||
|
||||
import net.minestom.server.command.CommandProcessor;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.entity.type.EntityItemFrame;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
import net.minestom.server.item.metadata.MapMeta;
|
||||
|
||||
public class TestItemFrame implements CommandProcessor {
|
||||
@Override
|
||||
public String getCommandName() {
|
||||
return "itemframe";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAliases() {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean process(CommandSender sender, String command, String[] args) {
|
||||
Player player = (Player)sender;
|
||||
EntityItemFrame frame = new EntityItemFrame(player.getPosition(), EntityItemFrame.ItemFrameOrientation.SOUTH);
|
||||
ItemStack map = new ItemStack(Material.FILLED_MAP, (byte) 1);
|
||||
map.setItemMeta(new MapMeta(MapAnimationDemo.MAP_ID));
|
||||
frame.setItemStack(map);
|
||||
frame.setInstance(player.getInstance());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAccess(Player player) {
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue