This commit is contained in:
jglrxavpok 2020-08-10 16:35:19 +02:00
parent 214fa4c808
commit 6d14e16dac
3 changed files with 2 additions and 180 deletions

View File

@ -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.

View File

@ -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);
}
}

View File

@ -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;
}
}