Skip to content

Commit 8bf78b7

Browse files
committed
-
1 parent 0cb501e commit 8bf78b7

File tree

5 files changed

+77
-4
lines changed

5 files changed

+77
-4
lines changed

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,21 @@
7979
</repositories>
8080

8181
<dependencies>
82+
<dependency>
83+
<groupId>com.github.sarxos</groupId>
84+
<artifactId>webcam-capture-driver-openimaj</artifactId>
85+
<version>0.3.12</version>
86+
</dependency>
8287
<dependency>
8388
<groupId>com.github.sarxos</groupId>
8489
<artifactId>webcam-capture</artifactId>
8590
<version>0.3.12</version>
8691
</dependency>
92+
<dependency>
93+
<groupId>com.github.sarxos</groupId>
94+
<artifactId>webcam-capture-driver-opencv</artifactId>
95+
<version>0.3.12</version>
96+
</dependency>
8797
<dependency>
8898
<groupId>org.spigotmc</groupId>
8999
<artifactId>spigot-api</artifactId>

readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ Render a specific map in the current mode with some parameters.
1919
### Examples
2020
`/gmcmode image` Change into image mode
2121
`/gmcrender 2 IMG.png` Render *IMG.png* on map with id 2.
22+
23+
This

src/main/java/com/github/clientcrash/graphicsmc/graphicsmc/RenderCommandListener.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import com.github.clientcrash.graphicsmc.graphicsmc.GraphicsMc;
44
import com.github.clientcrash.graphicsmc.graphicsmc.renderers.ImageRenderer;
5+
import com.github.clientcrash.graphicsmc.graphicsmc.renderers.RockWebcamRenderer;
6+
import com.github.clientcrash.graphicsmc.graphicsmc.renderers.SmoothVideoRender;
7+
import javafx.scene.transform.Scale;
58
import org.bukkit.Bukkit;
69
import org.bukkit.command.Command;
710
import org.bukkit.command.CommandExecutor;
@@ -12,7 +15,10 @@
1215
import javax.imageio.ImageIO;
1316
import java.awt.image.BufferedImage;
1417
import java.io.File;
18+
import java.io.FilenameFilter;
1519
import java.io.IOException;
20+
import java.nio.Buffer;
21+
import java.util.ArrayList;
1622

1723
public class RenderCommandListener implements CommandExecutor {
1824

@@ -37,8 +43,35 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
3743
break;
3844
case None:
3945
break;
46+
case Cam:
47+
mv.setScale(MapView.Scale.FARTHEST);
48+
mv.addRenderer(new RockWebcamRenderer());
49+
case Stream:
50+
try {
51+
mv.setScale(MapView.Scale.FARTHEST);
52+
ArrayList<BufferedImage> imgl = getImagesWithEndingInDir("./png",".png");
53+
mv.addRenderer(new SmoothVideoRender(imgl,0,Integer.parseInt(args[1])));
54+
} catch (Exception e) {
55+
sender.sendMessage(e.getMessage());
56+
}
57+
4058

4159
}
4260
return true;
4361
}
62+
public ArrayList<BufferedImage> getImagesWithEndingInDir(String path,String end){
63+
File dir = new File(".");
64+
File [] files = dir.listFiles(new FilenameFilter() {
65+
@Override
66+
public boolean accept(File dir, String name) {
67+
return name.endsWith(end);
68+
}
69+
});
70+
ArrayList<BufferedImage> imgl = new ArrayList<BufferedImage>();
71+
for (File f : files) {
72+
73+
imgl.add(ImageIO.read(new File(f)));
74+
}
75+
return imgl;
76+
}
4477
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.github.clientcrash.graphicsmc.graphicsmc.renderers;
2+
3+
import com.github.sarxos.webcam.Webcam;
4+
import org.bukkit.Bukkit;
5+
import org.bukkit.entity.Player;
6+
import org.bukkit.map.MapCanvas;
7+
import org.bukkit.map.MapRenderer;
8+
import org.bukkit.map.MapView;
9+
10+
import java.awt.image.BufferedImage;
11+
12+
public class RockWebcamRenderer extends MapRenderer {
13+
public RockWebcamRenderer(){
14+
cam = Webcam.getDefault();
15+
if (cam != null) {
16+
Bukkit.getServer().broadcastMessage("Webcam: " + cam.getName());
17+
} else {
18+
Bukkit.getServer().broadcastMessage("No webcam detected");
19+
}
20+
}
21+
Webcam cam;
22+
@Override
23+
public void render(MapView map, MapCanvas canvas, Player player) {
24+
BufferedImage bf = cam.getImage();
25+
canvas.drawImage(0,0,bf);
26+
}
27+
}

src/main/java/com/github/clientcrash/graphicsmc/graphicsmc/renderers/SmoothVideoRender.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
import org.bukkit.map.MapView;
77

88
import java.awt.image.BufferedImage;
9+
import java.util.ArrayList;
910

1011
public class SmoothVideoRender extends MapRenderer {
11-
BufferedImage[] frames;
12+
ArrayList<BufferedImage> frames;
1213
int currentIndex = 0;
1314
int ticksBetweenFrames = 0;
14-
public SmoothVideoRender(BufferedImage[] frames,int startindex,int ticksBetweenFrames){
15+
public SmoothVideoRender(ArrayList<BufferedImage> frames, int startindex, int ticksBetweenFrames){
1516
this.frames = frames;
1617
this.currentIndex = startindex;
1718
this.ticksBetweenFrames = ticksBetweenFrames;
@@ -25,7 +26,7 @@ public void render(MapView map, MapCanvas canvas, Player player) {
2526
currentTick=0;
2627
currentIndex++;
2728
}
28-
if(currentIndex+1 >= frames.length){currentIndex = 0;}
29-
canvas.drawImage(0,0, frames[currentIndex]);
29+
if(currentIndex+1 >= frames.size()){currentIndex = 0;}
30+
canvas.drawImage(0,0, frames.get(currentIndex));
3031
}
3132
}

0 commit comments

Comments
 (0)