This commit is contained in:
Matthias 2017-04-06 14:52:27 +02:00
parent 76dc1023c7
commit d4f65240eb
7 changed files with 214 additions and 154 deletions

View File

@ -1,14 +0,0 @@
Camera:
system-ID: 'Camera'
name: '&cCamera'
material: 383
glow: false
lore: ''
crafting:
disable: false
recipe: DXD,AEA,EAE
index:
D: 289
E: 280
X: 35
A: 331

32
src/Models/Camera.yml Normal file
View File

@ -0,0 +1,32 @@
Camera:
system-ID: Camera
creator: 10eabfae-1d87-3120-b9bc-cb16bfa6ce88
name: '&cCamera'
material: 383
glow: false
lore: ''
PlaceAbleSide: TOP
crafting:
disable: true
recipe: xxx,xxx,xxx
index:
D: 289
E: 280
X: 35
A: 331
x: '7'
ProjectModels:
ArmorStands:
'0': H4sIAAAAAAAAAI2SQU/CMBiGv8EYZSZ69ezdP+AFh+s2EtgIEGVcSMVCFrs22QbEn+DRkz+HeDEePXjXu3/CjnWAGhN7+r637/u0/VIToAoHPonpZZRG14wC5EqjRVLaYyTLe60KtUFMGCv2dCdKlE23kjhViTZfbgkyYXRJckuToqm7TKwiPs+tJph4wWhi8TmjJqAOdoaTDnYN0Ebrh3f35O18IusQ1JL1uNRlWPewZefevf1v3rKGkm31uxv289Xx531v+Yut9JzdCuzwn+xGv+16O/jrU+/xBbV+Bpo7uAqolzb/eGmpb46QI6U8E8kdgtqFhwdD0P3Ax2oICCrRDRzGEafThMyys5UQTJNOseCZVgHDJjGZUzgCBPXAcTzLtwsAAtS12v6+oMt7DbaNg7E6S2b1/HcU4xRTkkWCG4BGp8FsltJsd3c0/i2FSlp/FFINqiFZFfUXk+U1MnoCAAA=
'1': H4sIAAAAAAAAAI2SwU7CMBjHv8EYZSZ69ezdF/CCw3UbCWwLEGVcSMVCFrsu2QbER/DoSX0UT8aL8ejBuw/gS9ixDlBiYk/f9+///2v7pTpAFfZcEtHzMA0vGQXIlUaLpNRnJMt7pQq1fkQYK2rVChNpU40kSmWizRdrgnBpXZJc06Ro6jaLlyGf5VYddDxnNDH4jFEdUAdbg3EH2xoow+e7T/vo43Qs6gDkEvWo1EVYdbBh5t6t/R/esoaSbfS6K/brxeHXrb/YYUs9Z7c8M/gnu9Fr284G/v7i37+h1u9AcwOXAfnS5h8vLfXVEWKklGdxcoOgdubg/gBU13OxHAKCSngF+1HI6SQh0+xkGcdMEc54zjOlAppJIjKjcAAI6p5lOYZrFgAEqGu03W1BFffqrxsLY3mWyKr57yjGGU9IFsZcAzQ89qbTlGabu6PRrhRIqfn0KNYD1KAakGWx/Q1tGJ/megIAAA==
'2': H4sIAAAAAAAAAI2SzU7CQBSFb6XAUJduXLs3MXFnYrDYaUsCLQGilA0ZYSAT+6NtgfgILl35AD6IMSbGJQsTlz6AL+EMnQJqTJzVvafnfNN7Ww2gANsOCegZS9iFTwGEUqmRhLZ8kopeKUCxExDfz2rVZLG0qXocJDJRD2crAneVmiS+pHHWlC0/mrNwIqwaaHjq01gPJz7VADWw2R00sFUCpfd492HtvZ0MeO2BPLzu5zoPqzbWDeHdeP7Nm9eQs/V2c8l+Od/9vG3NfrGlLtg11/D+ya6065a9hi+eWvevqPYzUF3DZUBOWv1j0lxfXsFXSsM0im8QFE9t3OmC6rgOlktAsMVGsBOwkA5jMk6PRiy5omFCY4Xbo2mYKltQMkhAJuKbICi7pmnrjpFREKCmXnc2BZW/XGfVmBjLC3lWFb9IttNoSFIWhSVAvX13PE5ouh4A9aVUfT7k50BIXi4tHt6142soQsEj8yzxBbUuBox/AgAA
'3': H4sIAAAAAAAAAI2SvVLCQBDHNxDCER9Aa3tfwAaDuSTMQMIAo4SGOfGCN+TDuQQYO1tLKx+HsXEsLey1svElvJDjQx1nvGr3v/v/XXYvOkAZ9lwS0TOWsouQAuRKrUFS2glJludKGSq9iIRhUVMtxmWbavAolY5mPN8QhENrEz6lvEiqdpgsWDzJW3XQ8Syk3IgnIdUBtbDVH7WwrYEyWN6/2YevJyMR+yCPiIdrXZhVBxtm3rtT/9a7jmHNNrrtFfvp/ODzrjP/xZZ6zm54pv9Pdq3btJ0t/OWx8/CMGj8N9S1cGuSk9T8mXeurK8RKaZwl/AZB5dTBvT6orudiuQQEJXYJ+xGL6ZiTIDvOOLteiLcZXSXJVBGWZBZnSgk0k0Rkkr8LgqpnWY7hmgUJAWobTXdXUMUH9jaJhbG8VHjV/Dcp9pqMScaSWAM0OPKCIKXZdgg0lFL9fSP5Ulp+BPm5rUDZJ4ui/AUqumvogwIAAA==
'4': H4sIAAAAAAAAAI2SPU/CUBSGT6GUS/0BOju5mJi4uUCxXyTQEiBKiQm5wIU0trdJWyBurk7GyZ9D1MQ4OribuDq7e0tv+dCYeKdz3r7vc3tOKwPkYcfCPjlzI3fgEYBEKVVxRJoejpNeyEOh7WPPS2tRd0NuE5XQj3iiRmcrAnNJDRxekjBtioYXzF06SawyyNrUI6FCJx6RAdU1vdOva4YEQndx927sv1X6rHaAH1b3Mp2FRVNT1MS78XzLm9WQsZVWY8l+Pt/7vGnOfrG5nrCrtur8k11q1QxzDX99aN6/oOrPQHkN5wE+afmPSTN9eQVbKaFxEF4hKJyaWrsDomVbGl8Cgpw7gl3fpWQY4nF8Mg+CEaH9wTSOAyqwSDClsZADScU+niTfBUHR1nVTsdSUhAA1lJq1KYjsBdurRtc0finLislvku41GOLYDagEqHtoj8cRiRdPx+xU2BCotyUdJZLDpfLH7cXB1+N1AfIOnqdjfwPq6/d0gwIAAA==
'5': H4sIAAAAAAAAAI1SPVPCQBDdQAhHLGyt7a3sbDDIJWEGEgYYJTTMiQdzQz5mkgPGn0BpqZX/hM5fYGOlvaV/wLvkwug4jm61+/a9d7d7ZwJU4cAjEb1kGbsOKYBEGi2S0X5IuKy1KtSGEQnDoqfbLFU03UqjTCk68XrvIBRGj6RLmhZF3QmTDYsXkmqCiVchTa14EVITUBfbo2kXOwZo493dq3P8fD4VeQAqRD4pcSHWXWy1JfdL/xu3zKH0tga93Pvp6uh921//8Fa49G757eCf3o1Bx3H35s2P0zz+FqhJm79MWuK5QqyUxjxJbxHULlw8HIHu+R5GxRLKou7btmt5qhZT96yOJwEEFXYDhxGL6Swlc36WcTZbasIrWcVcq4DRJhFZyAcTluJiw72/jbE6TLbk9yj2mcwIZ0lsABqf+PN5Rnnz5V7Eo7g8mpTQWzkPChS0y1kPUINqQDZF+xOn2UsDewIAAA==
'6': H4sIAAAAAAAAAI2SMU/CQBTHX6G0pQ6uzu5Obi5Y4NqSQEuAKGUhJ17xQntNrgXiR3B01Mlvwmbi7uLk5uLoF/COtkRjjL7pvf9773f33p0JUIU9D8fkjKb0IiIAUqk3cUr6Ec5krFShNoxxFOU51aa8KFMtHqdFR4etdgTRofUwXxCeB7oTJWvK5rLUBBMtI8ItNo+ICUYX2aNpFzkaKOPN7atz+Hw6FX4AhQl/UuqiWXWR1Za1X/LfaksfSrY16G3Zj+cH7zf91Q92oUt2028H/2TXBx3H3cEbH8db+7uhmLTxy6Slvu0QKyUsS/i1AbWWi4YjUD3fQ0a+hDLQfdt2La+IxdQ9q+NJwYAKvYT9mDIy4zjMTtKMzhaKYCVLlikV0No4xnP5YAIpLjbc8W2EisNkSn6PfJ/JDGc0YRoY4yM/DFOSbd5CYVfi8saklJ7uhD1IKSilFyndQw2qAV63dDnuJ8Klm8t7AgAA
'7': H4sIAAAAAAAAAI1SPU/DMBC9NGmahoGVmZ2JjaWkrZNUapOqraDpUpniFKv5kBK3FT+BkREm/kk3JHYWJjYWRv4AduNUIITgprt37z37zjYBVNjzcEzOaE4vIgIgkHoT56QfYSZqRYXqMMZRVPQ0m2aSpllZnEtFJ1ntHLhC7+FsQbKiqDlRuqbJXFBNMNEyIpmVzCNigtFF9mjaRY4Oynhz++ocPp9OeR6ADJ5PSpyLNRdZbcH90v/GLXMova1Bb+v9eH7wftNf/fCWuPBu+u3gn971Qcdxd+aNj+Nt/C2QkzZ+mbTEtwq+UpKwNLs2oNpy0XAEmud7yCiWUBY137Zdy5M1n7pndTwBGFChl7Af04TMMhyyk5zR2ULhXukyYUoF9DaO8Vw8GLfkFxvu/G2E5GGiJb5Hsc90hhlNEx2M8ZEfhjlhjac7Hg/88sZEQpu3kMeVgIISehGse6iCGuB1C4txPwEedj0GewIAAA==
'8': H4sIAAAAAAAAAI1STU/CQBCdSimlXjV61Tt/wJhgsV8k0BIgSrmQFRfc0A+zLRB/gkdPHv0LxrMJejHe9ODdxKu/wHhxl7agMSbuad6bN292ZlcByMGqjXx8QCJy5GEAzhQrKMIND8UcCznIt3zkeUlONAhNZaJK/ShRFKvBZOHAsFRHdIRpoiuYXjglwZAjBRR97GGqBkMPKyDXdKPdq+mmBEJndvFqbr/s9VjsQnpY3M14Vixauqpx7bf8D20WQ+atNutz74fDzffzxuSXd8pz74qjuf/0LjarprU0f75vXD7KFV4w+9j6bGuldV5QfjJud2+u1pYF6aTlPybN+HkLtlIcxCE9kyG/b+mtNoi2Y+tysoQMFBzDsFQ7xWzqulq1OSHDCjmGDZ8EuE/RIN6JKTmdssfrnYThSGCe4TiIhRWQNOSjIX84Zs0u2Fr0MXQ9bcpT/Jskew37KCZhIIHcKTmDQYTj2V02hNzNqOsF5aZU+S2h8pBz0TSJvwBrq5vbgwIAAA==
'9': H4sIAAAAAAAAAI1SwU7CQBR8hVKWmhiPnr37A16w2G1LAm0DRCkXsuJCGtut2RaIn+DRk5+DXoxHD949evAn3NItoMbEPc2bnZm372V1gCrsuSSm52EaXkYUIGcaLZJSPyJZXitVqPVjEkUFVq2QS5lq8DiVjjZbbBKESusSfk15cVm3o2QZslle6aDjeUS5wWYR1QF1sDUYd7CtgTJc3b/bR2+nY4EDkEfgUckLs+pgw8y1O/fftCWGMtvoddfZzxeHn3f+4le25PPslmcG/8xu9Nq2sw1/ffIfXlDrp6G5DZcGOWnzj0lLft1CrJSyLOG3CGpnDu4PQHU9F8slIKiEV3AQh4xOOJlmJxPCb2imCG0yZ5lSAc0kMZlR2AcEdc+yHMM1iwgEqGu03V1CFS/rbwoLY9lNeNX8fxQLTSYkCxOmARoee9NpSrPVY/l6NJLUdiAUSKr5UVA1qAZkWeAvdXz9DXwCAAA=
'10': H4sIAAAAAAAAAI1SQU7CQBT9hVKGGhOXrt17ATdY7LQlgbYBopQNGXEgje3UTAvEI7h05XHQjXHJwr0H8BJO6RRQY+Ks3n/z3vvzf0YHqMKBS2J6GabhdUQBcqbRIin1I5LltVKFWj8mUVRg1Qq5lKkGj1PpaLPFNkGotC7ht5QXl3U7SpYhm+WVDjqeR5QbbBZRHVAHW4NxB9saKMPV44d98n4+FjgAeQQelbwwqw42zFy7d/9NW2Ios41ed5P9enX8+eAvfmVLPs9ueWbwz+xGr207u/D1i//0hlo/Dc1duDTISZt/TFrymxZipZRlCb9HULtwcH8Aquu5WC4BQSW8gaM4ZHTCyTQ7mxB+RzNFaJM5y5QKaCaJyYzCISCoe5blGK5ZRCBAXaPt7hOqeFl/W1gYy27Cq+b/o1hoMiFZmDAN0PDUm05Tmq2ey9ejkaR2A6FAUs11QdWgGpBlgb8AcNwsA3wCAAA=
'11': H4sIAAAAAAAAAI2RS07DMBRFX5WfGzbAmI6R2EFJqPORmo/aCppMKoPcKsJJpCS0YgkMGbGcigliyIA5C2ATOE3ShFZIeHTv9XvH9rMKIMCJS2J6HeXRLaMA0BOgr5Oc+owUpecV0jQmjFVaNKKsjkUti/NK9u1k3SXIDsnuaVZtKiZLN1GyKp0KKn5gNNOSFaMqoDE2ZosxNmXozbfPX+bZ5+WC6wDqxXXY5LxZtLA2Kms7+79qGw0NW5s4O/bbzen3k78+Ytd5yda9UfBPdn9im1YL/3j1X96RftgwbOF1Q/3S4R8vbfLdEXykNCnS7BGBdGXh6QxE13MxqobQGMUzDEtz9x45mu12A5GfOd0bA+OaA9yVPw/KIPQ852JQTiy9I0WUJjKg+bm3XOa0aK+HwuMoOIgkEAKyqfQPFQBdQF0CAAA=
Block: ''

View File

@ -1,8 +1,9 @@
package de.Ste3et_C0st.Furniture.Camera.Utils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.bukkit.Location;
import org.bukkit.block.Block;
@ -30,33 +31,37 @@ public class GetBlocks {
for(int z = 0; z < width; z++){
for(int y = 0; y < heigt; y++){
Location loc = new Relative(start, 0, y, - z, face).getSecondLocation();
l.addPixel(new Pixel(width - z, heigt - y, getByteFromBlock(loc.getBlock())));
Byte b = getByteFromBlock(loc.getBlock());
l.addPixel(new Pixel(width - z, heigt - y, b));
}
}
layerList.add(l);
}
return layerList;
}catch(Exception ex){
ex.printStackTrace();
return null;
}
}
public Byte getByteFromBlock(Block b){
try {
Object obj = CraftBlockClass.cast(b);
Object NMSBlock = CraftMagicNumbersClass.getDeclaredMethod("getBlock", org.bukkit.block.Block.class).invoke(null, obj);
Object IBlockData = NMSBlock.getClass().getSuperclass().getMethod("getBlockData", null).invoke(NMSBlock);
java.lang.reflect.Method m = IBlockData.getClass().getMethod("g", null);
m.setAccessible(true);
Object o = m.invoke(IBlockData);
int baseColor = (int) o.getClass().getField("M").get(o);
int color = baseColor * 4 + 0;
return (byte) color;
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException e) {
e.printStackTrace();
Object o = CraftMagicNumbersClass.getMethod("getBlock", org.bukkit.block.Block.class).invoke(null, b);
Object o2 = o.getClass().getMethod("getBlockData").invoke(o);
Method g = o2.getClass().getMethod("g");
g.setAccessible(true);
Object o3 = g.invoke(o2);
int color = o3.getClass().getField("M").getInt(o3) * 4 + 0;
if(color == 28){
color += randInt(0, 3);
}
return (byte) color;
} catch (Exception e) {
return 0;
}
}
public static int randInt(int min, int max) {
int randomNum = new Random().nextInt((max - min) + 1) + min;
return randomNum;
}
}

View File

@ -1,27 +1,51 @@
package de.Ste3et_C0st.Furniture.Camera.Utils;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.map.MapCanvas;
import org.bukkit.map.MapPalette;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
public class RenderClass extends MapRenderer {
private boolean hasRendered = false;
private List<Layer> layerList = new ArrayList<Layer>();
private ScaleMode mode;
public static enum ScaleMode{
NORMAL(56, 56), FAR(72, 72), FAHRTEST(102, 102), COMPLETE(128, 128);
int width, height;
ScaleMode(int width, int height){
this.width = width;
this.height = height;
}
public int getWidth(){return this.width;}
public int getHeight(){return this.height;}
}
Integer height = 55;
Integer width = 55;
public RenderClass(Location loc){
public RenderClass(Location loc, ScaleMode mode){
GetBlocks blocks = new GetBlocks();
hasRendered = true;
this.mode = mode;
this.layerList = blocks.returnBlocks(loc, 56, 56, 29, 0);
}
@SuppressWarnings("deprecation")
@Override
public void render(MapView mapView, MapCanvas mapCanvas, Player player) {
if(!hasRendered){return;}
@ -35,29 +59,57 @@ public class RenderClass extends MapRenderer {
}
}
Integer startX = 35;
Integer startY = 35;
for(int x = 0; x<=height;x++){
for(int y = 0; y<=width;y++){
mapCanvas.setPixel(startX + x, startY +y, (byte) 70);
}
}
for(int x = 0; x<=height;x++){
for(int y = 0; y<=width-5;y++){
mapCanvas.setPixel(startX + x, startY +y, (byte) 100);
//draw Background
BufferedImage image = new BufferedImage(57, 57, BufferedImage.TYPE_INT_RGB);
for(int x = 0; x<image.getWidth();x++){
for(int z = 0; z<image.getHeight();z++){
if((z) > (52)){
image.setRGB(x, z, new Color(101,151,213).getRGB());
}else{
image.setRGB(x, z, new Color(43,64,151).getRGB());
}
}
}
//draw Minecraft Blocks to the map
for(Layer l : this.layerList){
for(Pixel p : l.getPixelList()){
Byte b = p.getColor();
if(b == 0) continue;
mapCanvas.setPixel(- 1 + startX + p.getX(),- 1 + startY + p.getZ(), b);
Color c = MapPalette.getColor(p.getColor());
image.setRGB(p.getX(), p.getZ(), c.getRGB());
}
}
//Fix the image
image = image.getSubimage(1, 1, 56, 56);
//resize the image
image = createResizedCopy(image, mode.getWidth(), mode.getHeight(), true);
//get the x and y start Location
int x = (127 - image.getWidth()) / 2;
int y = (127 - image.getHeight()) / 2;
mapCanvas.drawImage(x, y, image);
hasRendered = false;
}catch(Exception e){e.printStackTrace();}
}catch(Exception e){
e.printStackTrace();
}
}
public BufferedImage createResizedCopy(Image originalImage,int scaledWidth, int scaledHeight, boolean preserveAlpha)
{
int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
Graphics2D g = scaledBI.createGraphics();
if (preserveAlpha) {
g.setComposite(AlphaComposite.Src);
}
g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
g.dispose();
return scaledBI;
}
}

View File

@ -69,7 +69,11 @@ public class main extends JavaPlugin implements Listener{
lib = (FurnitureLib) Bukkit.getPluginManager().getPlugin("FurnitureLib");
util = lib.getLocationUtil();
if(lib.getDescription().getVersion().startsWith("1.8") || lib.getDescription().getVersion().startsWith("1.9")){
new Project("Camera", this,getResource("Crafting/Camera.yml"),PlaceableSide.TOP, camera.class).setSize(1, 1, 1, CenterType.RIGHT);
/*
* Register a new Project wit only the crafting recipe the ArmorStands must be hardcode
* new Project("PROJECTNAME", this, getResource("Folder/File.yml"), PlaceableSide.ENUM, ClassFile)
*/
new Project("LargeTable", this,getResource("Crafting/LargeTable.yml"),PlaceableSide.TOP, largeTable.class).setSize(2, 1, 2, CenterType.RIGHT);
new Project("Sofa", this,getResource("Crafting/Sofa.yml"),PlaceableSide.TOP, sofa.class).setSize(1, 1, 3, CenterType.RIGHT);
new Project("Campfire1", this,getResource("Crafting/Campfire1.yml"),PlaceableSide.TOP, campfire_1.class).setSize(1, 1, 1, CenterType.RIGHT);
@ -88,6 +92,11 @@ public class main extends JavaPlugin implements Listener{
new Project("AdventCalender", this, getResource("Crafting/AdventCalender.yml"), PlaceableSide.TOP, AdventCalender.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("FireworkLauncher", this, getResource("Crafting/FireworkLauncher.yml"), PlaceableSide.TOP, FireworkLauncher.class).setSize(1, 1, 1, CenterType.CENTER);
/*
* Register a new Project with a FurnitureMaker Model
* new Project("PROJECTNAME", this, getResource("Folder/File.yml"))
*/
new Project("Catapult", this, getResource("Models/Catapult.yml")).setSize(3, 2, 3, CenterType.RIGHT).setEditorProject(false);
new Project("HumanSkeleton", this, getResource("Models/HumanSkeleton.yml")).setSize(3, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("CandyCane", this, getResource("Models/CandyCane.yml")).setSize(3, 4, 1, CenterType.RIGHT).setEditorProject(false);
@ -113,12 +122,16 @@ public class main extends JavaPlugin implements Listener{
new Project("Crossbow", this, getResource("Models/Crossbow.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Tent1", this,getResource("Models/Tent1.yml")).setSize(4, 3, 5, CenterType.RIGHT).setEditorProject(false);
new Project("GraveStone", this,getResource("Models/GraveStone.yml")).setSize(1, 2, 3, CenterType.CENTER).setEditorProject(false);
new Project("Camera", this, getResource("Models/Camera.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(true);
addDefault("fence", "whiteList", "config.yml");
addDefault("bearTrap", "damage", "damage.yml");
addDefault("catapult", "range", "range.yml");
setDefaults();
setDefaults_2();
//Register the plugin to load the Furnitures for the Hardcodet part
lib.registerPluginFurnitures(this);
loadModels();
@ -173,6 +186,7 @@ public class main extends JavaPlugin implements Listener{
}
public void loadModels(){
//Hook the class to the project
for(ObjectID id : FurnitureLib.getInstance().getFurnitureManager().getObjectList()){
if(id==null) continue;
if(id.getProjectOBJ() == null) continue;
@ -189,6 +203,7 @@ public class main extends JavaPlugin implements Listener{
case "Crossbow": new Crossbow(id);break;
case "Tent1": new tent_1(id);break;
case "GraveStone": new graveStone(id);break;
case "Camera": new camera(id);break;
default:break;
}
}
@ -196,6 +211,7 @@ public class main extends JavaPlugin implements Listener{
@EventHandler
public void onFurnitureLateSpawn(FurnitureLateSpawnEvent event){
//Hook the Furniture to the class then it will be placed
if(event.getProject()==null) return;
if(event.getProject().getName()==null) return;
if(event.getID().getSQLAction().equals(SQLAction.REMOVE)) return;
@ -211,6 +227,7 @@ public class main extends JavaPlugin implements Listener{
case "Crossbow": new Crossbow(event.getID());break;
case "Tent1": new tent_1(event.getID());break;
case "GraveStone": new graveStone(event.getID());break;
case "Camera": new camera(event.getID());break;
default:break;
}
}

View File

@ -1,125 +1,75 @@
package de.Ste3et_C0st.Furniture.Objects.electric;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
import org.bukkit.util.EulerAngle;
import de.Ste3et_C0st.Furniture.Camera.Utils.RenderClass;
import de.Ste3et_C0st.Furniture.Camera.Utils.RenderClass.ScaleMode;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.BodyPart;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
import de.Ste3et_C0st.FurnitureLib.main.entity.Relative;
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
public class camera extends Furniture implements Listener{
public class camera extends FurnitureHelper implements Listener{
private fEntity entity = null, entity2 = null;
private String zoom = "#ZOOM0#";
private ScaleMode mode = ScaleMode.NORMAL;
public camera(ObjectID id){
super(id);
if(isFinish()){
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
return;
Bukkit.getPluginManager().registerEvents(this, main.instance);
boolean b = false;
for(fEntity stand : id.getPacketList()){
if(stand.getCustomName().startsWith("#ZOOM")){
if(stand.isCustomNameVisible()){
stand.setNameVasibility(false);
b = true;
}
this.entity2 = stand;
zoom = stand.getCustomName();
}
if(stand.getItemInMainHand() != null){
if(stand.getItemInMainHand().getType().equals(Material.TRIPWIRE_HOOK)){
this.entity = stand;
}
}
}
spawn(id.getStartLocation());
}
public void spawn(Location location){
List<fArmorStand> aspList = new ArrayList<fArmorStand>();
BlockFace b = getLutil().yawToFace(location.getYaw()).getOppositeFace();
Location center = getLutil().getCenter(location);
Location gehäuse = getLutil().getRelativ(center, b, 0D, 0D).add(0,-1.0,0);
Location gehäuse2 = getLutil().getRelativ(center, b, 0D, 0D).add(0,-0.4,0);
Location fokus = getLutil().getRelativ(center, b, .15D, 0D).add(0,-.24,0);
Location search = getLutil().getRelativ(center, b, .5D, 0D).add(0,-1.2,0);
Location button = getLutil().getRelativ(center, b, -.15D, -.15D).add(0,.08,0);
Location feet1 = getLutil().getRelativ(center, b, .5D, .4D).add(0,-.9,0);
Location feet2 = getLutil().getRelativ(center, b, -.2D, -.7D).add(0,-.9,0);
Location feet3 = getLutil().getRelativ(center, b, -.7D, .2D).add(0,-.9,0);
gehäuse.setYaw(getLutil().FaceToYaw(b));
fokus.setYaw(getLutil().FaceToYaw(b));
search.setYaw(getLutil().FaceToYaw(b));
button.setYaw(getLutil().FaceToYaw(b));
feet1.setYaw(getLutil().FaceToYaw(b));
feet2.setYaw(getLutil().FaceToYaw(b) + 180 - 45);
feet3.setYaw(getLutil().FaceToYaw(b) + 180 + 45);
fArmorStand as = getManager().createArmorStand(getObjID(), gehäuse);
as.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short) 15));
aspList.add(as);
as = getManager().createArmorStand(getObjID(), gehäuse2);
as.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short) 15));
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), fokus);
as.getInventory().setHelmet(new ItemStack(Material.DISPENSER));
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), search);
as.getInventory().setHelmet(new ItemStack(Material.TRIPWIRE_HOOK));
aspList.add(as);
as = getManager().createArmorStand(getObjID(), button);
as.getInventory().setHelmet(new ItemStack(Material.WOOD_BUTTON));
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), feet1);
as.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
as.setPose(new EulerAngle(1.2, 0, 0), BodyPart.RIGHT_ARM);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), feet2);
as.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
as.setPose(new EulerAngle(1.2, 0, 0), BodyPart.RIGHT_ARM);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), feet3);
as.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
as.setPose(new EulerAngle(1.2, 0, 0), BodyPart.RIGHT_ARM);
aspList.add(as);
for(fArmorStand asp : aspList){
asp.setInvisible(true);
if(b){
update();
}
send();
Bukkit.getPluginManager().registerEvents(this, getPlugin());
}
@EventHandler
public void onFurnitureBreak(FurnitureBreakEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
e.remove();
delete();
public void setZoom(){
if(entity == null){return;}
Relative r = new Relative(getCenter(), -0.07, 0.0625, -0.13, getBlockFace().getOppositeFace());
Location loc = r.getSecondLocation();
if(zoom.equalsIgnoreCase("#ZOOM1#")){
loc = r.getSecondLocation().subtract(0, .15, 0);
}else if(zoom.equalsIgnoreCase("#ZOOM2#")){
loc = r.getSecondLocation().subtract(0, .3, 0);
}else if(zoom.equalsIgnoreCase("#ZOOM3#")){
loc = r.getSecondLocation().subtract(0, .4, 0);
}
loc.setYaw(entity.getLocation().getYaw());
this.entity.teleport(loc);
update();
}
@SuppressWarnings("deprecation")
@EventHandler
public void onFurnitureClick(FurnitureClickEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(e.isCancelled()){return;}
public void onFurnitureClick(ProjectClickEvent e) {
if(!e.getID().equals(getObjID())){return;}
Player p = e.getPlayer();
Location pLocation = getLutil().getRelativ(p.getLocation().getBlock().getLocation(), getBlockFace(), -1D, 0D).clone();
@ -127,19 +77,37 @@ public class camera extends Furniture implements Listener{
pLocation.setYaw(locCopy.getYaw());
if(pLocation.equals(locCopy)){
if(getLutil().yawToFace(p.getLocation().getYaw()).getOppositeFace().equals(getBlockFace())){
if(!p.getInventory().getItemInHand().getType().equals(Material.MAP)){return;}
MapView view = Bukkit.getMap(p.getItemInHand().getDurability());
if(e.canBuild()){
if(!p.getInventory().getItemInMainHand().getType().equals(Material.MAP)){
if(entity == null || entity2 == null)return;
if(this.zoom.equalsIgnoreCase("#ZOOM0#")){
this.mode = ScaleMode.FAR;
this.zoom = "#ZOOM1#";
}else if(this.zoom.equalsIgnoreCase("#ZOOM1#")){
this.mode = ScaleMode.FAHRTEST;
this.zoom = "#ZOOM2#";
}else if(this.zoom.equalsIgnoreCase("#ZOOM2#")){
this.mode = ScaleMode.COMPLETE;
this.zoom = "#ZOOM3#";
}else if(this.zoom.equalsIgnoreCase("#ZOOM3#")){
this.mode = ScaleMode.NORMAL;
this.zoom = "#ZOOM0#";
}
this.entity2.setName(zoom);
setZoom();
update();
return;
}
}else{
if(!p.getInventory().getItemInMainHand().getType().equals(Material.MAP)){
return;
}
}
MapView view = Bukkit.getMap(p.getInventory().getItemInMainHand().getDurability());
Location l = getLocation().clone();
l.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
Iterator<MapRenderer> iter = view.getRenderers().iterator();
while(iter.hasNext()){
view.removeRenderer(iter.next());
}
try{
RenderClass renderer = new RenderClass(l);
view.addRenderer(renderer);
}catch (Exception ex){}
view.getRenderers().clear();
try{view.addRenderer(new RenderClass(l, mode));}catch (Exception ex){}
}
}
}

View File

@ -1,5 +1,5 @@
name: DiceFurniture
version: 3.2.0.2
version: 3.2.0.5
description: Add some new Objects to the Server
author: Ste3et_C0st
website: http://dicecraft.de