mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-08 16:12:18 -07:00
Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/ By: md_5 <git@md-5.net>
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.bukkit</groupId>
|
<groupId>org.bukkit</groupId>
|
||||||
<artifactId>bukkit</artifactId>
|
<artifactId>bukkit</artifactId>
|
||||||
<version>1.7.10-R0.1-SNAPSHOT</version>
|
<version>1.8-R0.1-SNAPSHOT</version>
|
||||||
<name>Bukkit</name>
|
<name>Bukkit</name>
|
||||||
<url>http://www.bukkit.org</url>
|
<url>http://www.bukkit.org</url>
|
||||||
|
|
||||||
@@ -10,34 +10,6 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<scm>
|
|
||||||
<developerConnection>scm:git:git@github.com:Bukkit/Bukkit.git</developerConnection>
|
|
||||||
<connection>scm:git:git://github.com/Bukkit/Bukkit.git</connection>
|
|
||||||
<url>https://github.com/Bukkit/Bukkit/tree/master/</url>
|
|
||||||
</scm>
|
|
||||||
|
|
||||||
<ciManagement>
|
|
||||||
<system>jenkins</system>
|
|
||||||
<url>http://ci.bukkit.org</url>
|
|
||||||
</ciManagement>
|
|
||||||
|
|
||||||
<distributionManagement>
|
|
||||||
<site>
|
|
||||||
<id>jd.bukkit.org</id>
|
|
||||||
<url>file:///home/javadocs/public_html/</url>
|
|
||||||
</site>
|
|
||||||
<repository>
|
|
||||||
<id>repobo-rel</id>
|
|
||||||
<name>repo.bukkit.org Releases</name>
|
|
||||||
<url>http://repo.bukkit.org/content/repositories/releases/</url>
|
|
||||||
</repository>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>repobo-snap</id>
|
|
||||||
<name>repo.bukkit.org Snapshots</name>
|
|
||||||
<url>http://repo.bukkit.org/content/repositories/snapshots/</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
</distributionManagement>
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
@@ -115,10 +87,11 @@
|
|||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- Should be kept in sync with Minecraft -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.guava</groupId>
|
<groupId>com.google.guava</groupId>
|
||||||
<artifactId>guava</artifactId>
|
<artifactId>guava</artifactId>
|
||||||
<version>10.0.1</version>
|
<version>17.0</version>
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
@@ -37,6 +37,7 @@ public enum Achievement {
|
|||||||
FULL_BEACON (KILL_WITHER),
|
FULL_BEACON (KILL_WITHER),
|
||||||
BREED_COW (KILL_COW),
|
BREED_COW (KILL_COW),
|
||||||
DIAMONDS_TO_YOU (GET_DIAMONDS),
|
DIAMONDS_TO_YOU (GET_DIAMONDS),
|
||||||
|
OVERPOWERED (BUILD_BETTER_PICKAXE)
|
||||||
;
|
;
|
||||||
|
|
||||||
private final Achievement parent;
|
private final Achievement parent;
|
||||||
|
@@ -25,7 +25,14 @@ public enum GameMode {
|
|||||||
/**
|
/**
|
||||||
* Adventure mode cannot break blocks without the correct tools.
|
* Adventure mode cannot break blocks without the correct tools.
|
||||||
*/
|
*/
|
||||||
ADVENTURE(2);
|
ADVENTURE(2),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spectator mode cannot interact with the world in anyway and is
|
||||||
|
* invisible to normal players. This grants the player the
|
||||||
|
* ability to no-clip through the world.
|
||||||
|
*/
|
||||||
|
SPECTATOR(3);
|
||||||
|
|
||||||
private final int value;
|
private final int value;
|
||||||
private final static Map<Integer, GameMode> BY_ID = Maps.newHashMap();
|
private final static Map<Integer, GameMode> BY_ID = Maps.newHashMap();
|
||||||
|
@@ -57,6 +57,7 @@ import org.bukkit.potion.Potion;
|
|||||||
import org.bukkit.util.Java15Compat;
|
import org.bukkit.util.Java15Compat;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import org.bukkit.material.Banner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An enum of all material IDs accepted by the official server and client
|
* An enum of all material IDs accepted by the official server and client
|
||||||
@@ -229,12 +230,39 @@ public enum Material {
|
|||||||
LOG_2(162),
|
LOG_2(162),
|
||||||
ACACIA_STAIRS(163, Stairs.class),
|
ACACIA_STAIRS(163, Stairs.class),
|
||||||
DARK_OAK_STAIRS(164, Stairs.class),
|
DARK_OAK_STAIRS(164, Stairs.class),
|
||||||
|
SLIME_BLOCK(165),
|
||||||
|
BARRIER(166),
|
||||||
|
IRON_TRAPDOOR(167, TrapDoor.class),
|
||||||
|
PRISMARINE(168),
|
||||||
|
SEA_LANTERN(169),
|
||||||
HAY_BLOCK(170),
|
HAY_BLOCK(170),
|
||||||
CARPET(171),
|
CARPET(171),
|
||||||
HARD_CLAY(172),
|
HARD_CLAY(172),
|
||||||
COAL_BLOCK(173),
|
COAL_BLOCK(173),
|
||||||
PACKED_ICE(174),
|
PACKED_ICE(174),
|
||||||
DOUBLE_PLANT(175),
|
DOUBLE_PLANT(175),
|
||||||
|
STANDING_BANNER(176, Banner.class),
|
||||||
|
WALL_BANNER(177, Banner.class),
|
||||||
|
DAYLIGHT_DETECTOR_INVERTED(178),
|
||||||
|
RED_SANDSTONE(179),
|
||||||
|
RED_SANDSTONE_STAIRS(180, Stairs.class),
|
||||||
|
DOUBLE_STONE_SLAB2(181),
|
||||||
|
STONE_SLAB2(182),
|
||||||
|
SPRUCE_FENCE_GATE(183),
|
||||||
|
BIRCH_FENCE_GATE(184),
|
||||||
|
JUNGLE_FENCE_GATE(185),
|
||||||
|
DARK_OAK_FENCE_GATE(186),
|
||||||
|
ACACIA_FENCE_GATE(187),
|
||||||
|
SPRUCE_FENCE(188),
|
||||||
|
BIRCH_FENCE(189),
|
||||||
|
JUNGLE_FENCE(190),
|
||||||
|
DARK_OAK_FENCE(191),
|
||||||
|
ACACIA_FENCE(192),
|
||||||
|
SPRUCE_DOOR(193),
|
||||||
|
BIRCH_DOOR(194),
|
||||||
|
JUNGLE_DOOR(195),
|
||||||
|
ACACIA_DOOR(196),
|
||||||
|
DARK_OAK_DOOR(197),
|
||||||
// ----- Item Separator -----
|
// ----- Item Separator -----
|
||||||
IRON_SPADE(256, 1, 250),
|
IRON_SPADE(256, 1, 250),
|
||||||
IRON_PICKAXE(257, 1, 250),
|
IRON_PICKAXE(257, 1, 250),
|
||||||
@@ -304,13 +332,13 @@ public enum Material {
|
|||||||
PAINTING(321),
|
PAINTING(321),
|
||||||
GOLDEN_APPLE(322),
|
GOLDEN_APPLE(322),
|
||||||
SIGN(323, 16),
|
SIGN(323, 16),
|
||||||
WOOD_DOOR(324, 1),
|
WOOD_DOOR(324, 64),
|
||||||
BUCKET(325, 16),
|
BUCKET(325, 16),
|
||||||
WATER_BUCKET(326, 1),
|
WATER_BUCKET(326, 1),
|
||||||
LAVA_BUCKET(327, 1),
|
LAVA_BUCKET(327, 1),
|
||||||
MINECART(328, 1),
|
MINECART(328, 1),
|
||||||
SADDLE(329, 1),
|
SADDLE(329, 1),
|
||||||
IRON_DOOR(330, 1),
|
IRON_DOOR(330, 64),
|
||||||
REDSTONE(331),
|
REDSTONE(331),
|
||||||
SNOW_BALL(332, 16),
|
SNOW_BALL(332, 16),
|
||||||
BOAT(333, 1),
|
BOAT(333, 1),
|
||||||
@@ -395,12 +423,28 @@ public enum Material {
|
|||||||
QUARTZ(406),
|
QUARTZ(406),
|
||||||
EXPLOSIVE_MINECART(407, 1),
|
EXPLOSIVE_MINECART(407, 1),
|
||||||
HOPPER_MINECART(408, 1),
|
HOPPER_MINECART(408, 1),
|
||||||
|
PRISMARINE_SHARD(409),
|
||||||
|
PRISMARINE_CRYSTALS(410),
|
||||||
|
RABBIT(411),
|
||||||
|
COOKED_RABBIT(412),
|
||||||
|
RABBIT_STEW(413, 1),
|
||||||
|
RABBIT_FOOT(414),
|
||||||
|
RABBIT_HIDE(415),
|
||||||
|
ARMOR_STAND(416, 16),
|
||||||
IRON_BARDING(417, 1),
|
IRON_BARDING(417, 1),
|
||||||
GOLD_BARDING(418, 1),
|
GOLD_BARDING(418, 1),
|
||||||
DIAMOND_BARDING(419, 1),
|
DIAMOND_BARDING(419, 1),
|
||||||
LEASH(420),
|
LEASH(420),
|
||||||
NAME_TAG(421),
|
NAME_TAG(421),
|
||||||
COMMAND_MINECART(422, 1),
|
COMMAND_MINECART(422, 1),
|
||||||
|
MUTTON(423),
|
||||||
|
COOKED_MUTTON(424),
|
||||||
|
BANNER(425, 16),
|
||||||
|
SPRUCE_DOOR_ITEM(427),
|
||||||
|
BIRCH_DOOR_ITEM(428),
|
||||||
|
JUNGLE_DOOR_ITEM(429),
|
||||||
|
ACACIA_DOOR_ITEM(430),
|
||||||
|
DARK_OAK_DOOR_ITEM(431),
|
||||||
GOLD_RECORD(2256, 1),
|
GOLD_RECORD(2256, 1),
|
||||||
GREEN_RECORD(2257, 1),
|
GREEN_RECORD(2257, 1),
|
||||||
RECORD_3(2258, 1),
|
RECORD_3(2258, 1),
|
||||||
@@ -558,6 +602,11 @@ public enum Material {
|
|||||||
case GOLDEN_APPLE:
|
case GOLDEN_APPLE:
|
||||||
case ROTTEN_FLESH:
|
case ROTTEN_FLESH:
|
||||||
case SPIDER_EYE:
|
case SPIDER_EYE:
|
||||||
|
case RABBIT:
|
||||||
|
case COOKED_RABBIT:
|
||||||
|
case RABBIT_STEW:
|
||||||
|
case MUTTON:
|
||||||
|
case COOKED_MUTTON:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -777,6 +826,25 @@ public enum Material {
|
|||||||
case ACACIA_STAIRS:
|
case ACACIA_STAIRS:
|
||||||
case DARK_OAK_STAIRS:
|
case DARK_OAK_STAIRS:
|
||||||
case PACKED_ICE:
|
case PACKED_ICE:
|
||||||
|
case RED_SANDSTONE:
|
||||||
|
case SLIME_BLOCK:
|
||||||
|
case BARRIER:
|
||||||
|
case IRON_TRAPDOOR:
|
||||||
|
case PRISMARINE:
|
||||||
|
case SEA_LANTERN:
|
||||||
|
case DOUBLE_STONE_SLAB2:
|
||||||
|
case RED_SANDSTONE_STAIRS:
|
||||||
|
case STONE_SLAB2:
|
||||||
|
case SPRUCE_FENCE_GATE:
|
||||||
|
case BIRCH_FENCE_GATE:
|
||||||
|
case JUNGLE_FENCE_GATE:
|
||||||
|
case DARK_OAK_FENCE_GATE:
|
||||||
|
case ACACIA_FENCE_GATE:
|
||||||
|
case SPRUCE_FENCE:
|
||||||
|
case BIRCH_FENCE:
|
||||||
|
case JUNGLE_FENCE:
|
||||||
|
case DARK_OAK_FENCE:
|
||||||
|
case ACACIA_FENCE:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -837,6 +905,7 @@ public enum Material {
|
|||||||
case ACTIVATOR_RAIL:
|
case ACTIVATOR_RAIL:
|
||||||
case CARPET:
|
case CARPET:
|
||||||
case DOUBLE_PLANT:
|
case DOUBLE_PLANT:
|
||||||
|
case DAYLIGHT_DETECTOR_INVERTED:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -889,6 +958,17 @@ public enum Material {
|
|||||||
case LOG_2:
|
case LOG_2:
|
||||||
case ACACIA_STAIRS:
|
case ACACIA_STAIRS:
|
||||||
case DARK_OAK_STAIRS:
|
case DARK_OAK_STAIRS:
|
||||||
|
case DOUBLE_PLANT:
|
||||||
|
case SPRUCE_FENCE_GATE:
|
||||||
|
case BIRCH_FENCE_GATE:
|
||||||
|
case JUNGLE_FENCE_GATE:
|
||||||
|
case DARK_OAK_FENCE_GATE:
|
||||||
|
case ACACIA_FENCE_GATE:
|
||||||
|
case SPRUCE_FENCE:
|
||||||
|
case BIRCH_FENCE:
|
||||||
|
case JUNGLE_FENCE:
|
||||||
|
case DARK_OAK_FENCE:
|
||||||
|
case ACACIA_FENCE:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -928,6 +1008,18 @@ public enum Material {
|
|||||||
case LOG_2:
|
case LOG_2:
|
||||||
case CARPET:
|
case CARPET:
|
||||||
case DOUBLE_PLANT:
|
case DOUBLE_PLANT:
|
||||||
|
case DEAD_BUSH:
|
||||||
|
case FENCE_GATE:
|
||||||
|
case SPRUCE_FENCE_GATE:
|
||||||
|
case BIRCH_FENCE_GATE:
|
||||||
|
case JUNGLE_FENCE_GATE:
|
||||||
|
case DARK_OAK_FENCE_GATE:
|
||||||
|
case ACACIA_FENCE_GATE:
|
||||||
|
case SPRUCE_FENCE:
|
||||||
|
case BIRCH_FENCE:
|
||||||
|
case JUNGLE_FENCE:
|
||||||
|
case DARK_OAK_FENCE:
|
||||||
|
case ACACIA_FENCE:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -1009,6 +1101,10 @@ public enum Material {
|
|||||||
case COAL_BLOCK:
|
case COAL_BLOCK:
|
||||||
case LOG_2:
|
case LOG_2:
|
||||||
case PACKED_ICE:
|
case PACKED_ICE:
|
||||||
|
case SLIME_BLOCK:
|
||||||
|
case BARRIER:
|
||||||
|
case PRISMARINE:
|
||||||
|
case RED_SANDSTONE:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@@ -27,12 +27,17 @@ public enum Statistic {
|
|||||||
BOAT_ONE_CM,
|
BOAT_ONE_CM,
|
||||||
PIG_ONE_CM,
|
PIG_ONE_CM,
|
||||||
HORSE_ONE_CM,
|
HORSE_ONE_CM,
|
||||||
|
SPRINT_ONE_CM,
|
||||||
|
CROUCH_ONE_CM,
|
||||||
MINE_BLOCK(Type.BLOCK),
|
MINE_BLOCK(Type.BLOCK),
|
||||||
USE_ITEM(Type.ITEM),
|
USE_ITEM(Type.ITEM),
|
||||||
BREAK_ITEM(Type.ITEM),
|
BREAK_ITEM(Type.ITEM),
|
||||||
CRAFT_ITEM(Type.ITEM),
|
CRAFT_ITEM(Type.ITEM),
|
||||||
KILL_ENTITY(Type.ENTITY),
|
KILL_ENTITY(Type.ENTITY),
|
||||||
ENTITY_KILLED_BY(Type.ENTITY);
|
ENTITY_KILLED_BY(Type.ENTITY),
|
||||||
|
TIME_SINCE_DEATH,
|
||||||
|
TALKED_TO_VILLAGER,
|
||||||
|
TRADED_WITH_VILLAGER;
|
||||||
|
|
||||||
private final Type type;
|
private final Type type;
|
||||||
|
|
||||||
|
@@ -11,7 +11,9 @@ public enum WorldType {
|
|||||||
FLAT("FLAT"),
|
FLAT("FLAT"),
|
||||||
VERSION_1_1("DEFAULT_1_1"),
|
VERSION_1_1("DEFAULT_1_1"),
|
||||||
LARGE_BIOMES("LARGEBIOMES"),
|
LARGE_BIOMES("LARGEBIOMES"),
|
||||||
AMPLIFIED("AMPLIFIED");
|
AMPLIFIED("AMPLIFIED"),
|
||||||
|
CUSTOMIZED("CUSTOMIZED"),
|
||||||
|
DEBUG_ALL_BLOCK_STATES("DEBUG_ALL_BLOCK_STATES");
|
||||||
|
|
||||||
private final static Map<String, WorldType> BY_NAME = Maps.newHashMap();
|
private final static Map<String, WorldType> BY_NAME = Maps.newHashMap();
|
||||||
private final String name;
|
private final String name;
|
||||||
|
77
paper-api/src/main/java/org/bukkit/block/Banner.java
Normal file
77
paper-api/src/main/java/org/bukkit/block/Banner.java
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
package org.bukkit.block;
|
||||||
|
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.block.banner.Pattern;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface Banner extends BlockState {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the base color for this banner
|
||||||
|
*
|
||||||
|
* @return the base color
|
||||||
|
*/
|
||||||
|
DyeColor getBaseColor();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the base color for this banner
|
||||||
|
*
|
||||||
|
* @param color the base color
|
||||||
|
*/
|
||||||
|
void setBaseColor(DyeColor color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of patterns on this banner
|
||||||
|
*
|
||||||
|
* @return the patterns
|
||||||
|
*/
|
||||||
|
List<Pattern> getPatterns();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the patterns used on this banner
|
||||||
|
*
|
||||||
|
* @param patterns the new list of patterns
|
||||||
|
*/
|
||||||
|
void setPatterns(List<Pattern> patterns);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a new pattern on top of the existing
|
||||||
|
* patterns
|
||||||
|
*
|
||||||
|
* @param pattern the new pattern to add
|
||||||
|
*/
|
||||||
|
void addPattern(Pattern pattern);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pattern at the specified index
|
||||||
|
*
|
||||||
|
* @param i the index
|
||||||
|
* @return the pattern
|
||||||
|
*/
|
||||||
|
Pattern getPattern(int i);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the pattern at the specified index
|
||||||
|
*
|
||||||
|
* @param i the index
|
||||||
|
* @return the removed pattern
|
||||||
|
*/
|
||||||
|
Pattern removePattern(int i);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the pattern at the specified index
|
||||||
|
*
|
||||||
|
* @param i the index
|
||||||
|
* @param pattern the new pattern
|
||||||
|
*/
|
||||||
|
void setPattern(int i, Pattern pattern);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of patterns on this
|
||||||
|
* banner
|
||||||
|
*
|
||||||
|
* @return the number of patterns
|
||||||
|
*/
|
||||||
|
int numberOfPatterns();
|
||||||
|
}
|
61
paper-api/src/main/java/org/bukkit/block/banner/Pattern.java
Normal file
61
paper-api/src/main/java/org/bukkit/block/banner/Pattern.java
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package org.bukkit.block.banner;
|
||||||
|
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.configuration.serialization.SerializableAs;
|
||||||
|
|
||||||
|
@SerializableAs("Pattern")
|
||||||
|
public class Pattern {
|
||||||
|
|
||||||
|
private final DyeColor color;
|
||||||
|
private final PatternType pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new pattern from the specified color and
|
||||||
|
* pattern type
|
||||||
|
*
|
||||||
|
* @param color the pattern color
|
||||||
|
* @param pattern the pattern type
|
||||||
|
*/
|
||||||
|
public Pattern(DyeColor color, PatternType pattern) {
|
||||||
|
this.color = color;
|
||||||
|
this.pattern = pattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the color of the pattern
|
||||||
|
*
|
||||||
|
* @return the color of the pattern
|
||||||
|
*/
|
||||||
|
public DyeColor getColor() {
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the type of pattern
|
||||||
|
*
|
||||||
|
* @return the pattern type
|
||||||
|
*/
|
||||||
|
public PatternType getPattern() {
|
||||||
|
return pattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int hash = 3;
|
||||||
|
hash = 97 * hash + (this.color != null ? this.color.hashCode() : 0);
|
||||||
|
hash = 97 * hash + (this.pattern != null ? this.pattern.hashCode() : 0);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final Pattern other = (Pattern) obj;
|
||||||
|
return this.color == other.color && this.pattern == other.pattern;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,80 @@
|
|||||||
|
package org.bukkit.block.banner;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public enum PatternType {
|
||||||
|
BASE("b"),
|
||||||
|
SQUARE_BOTTOM_LEFT("bl"),
|
||||||
|
SQUARE_BOTTOM_RIGHT("br"),
|
||||||
|
SQUARE_TOP_LEFT("tl"),
|
||||||
|
SQUARE_TOP_RIGHT("tr"),
|
||||||
|
STRIPE_BOTTOM("bs"),
|
||||||
|
STRIPE_TOP("ts"),
|
||||||
|
STRIPE_LEFT("ls"),
|
||||||
|
STRIPE_RIGHT("rs"),
|
||||||
|
STRIPE_CENTER("cs"),
|
||||||
|
STRIPE_MIDDLE("ms"),
|
||||||
|
STRIPE_DOWNRIGHT("drs"),
|
||||||
|
STRIPE_DOWNLEFT("dls"),
|
||||||
|
STRIPE_SMALL("ss"),
|
||||||
|
CROSS("cr"),
|
||||||
|
STRAIGHT_CROSS("sc"),
|
||||||
|
TRIANGLE_BOTTOM("bt"),
|
||||||
|
TRIANGLE_TOP("tt"),
|
||||||
|
TRIANGLES_BOTTOM("bts"),
|
||||||
|
TRIANGLES_TOP("tts"),
|
||||||
|
DIAGONAL_LEFT("ld"),
|
||||||
|
DIAGONAL_RIGHT("rd"),
|
||||||
|
DIAGONAL_LEFT_MIRROR("lud"),
|
||||||
|
DIAGONAL_RIGHT_MIRROR("rud"),
|
||||||
|
CIRCLE_MIDDLE("mc"),
|
||||||
|
RHOMBUS_MIDDLE("mr"),
|
||||||
|
HALF_VERTICAL("vh"),
|
||||||
|
HALF_HORIZONTAL("hh"),
|
||||||
|
HALF_VERTICAL_MIRROR("vhr"),
|
||||||
|
HALF_HORIZONTAL_MIRROR("hhb"),
|
||||||
|
BORDER("bo"),
|
||||||
|
CURLY_BORDER("cbo"),
|
||||||
|
CREEPER("cre"),
|
||||||
|
GRADIENT("gra"),
|
||||||
|
GRADIENT_UP("gru"),
|
||||||
|
BRICKS("bri"),
|
||||||
|
SKULL("sku"),
|
||||||
|
FLOWER("flo"),
|
||||||
|
MOJANG("moj");
|
||||||
|
|
||||||
|
private final String identifier;
|
||||||
|
private static final Map<String, PatternType> byString = new HashMap<String, PatternType>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
for (PatternType p : values()) {
|
||||||
|
byString.put(p.identifier, p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private PatternType(String key) {
|
||||||
|
this.identifier = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the identifier used to represent
|
||||||
|
* this pattern type
|
||||||
|
*
|
||||||
|
* @return the pattern's identifier
|
||||||
|
*/
|
||||||
|
public String getIdentifier() {
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pattern type which matches the passed
|
||||||
|
* identifier or null if no matches are found
|
||||||
|
*
|
||||||
|
* @param identifier the identifier
|
||||||
|
* @return the matched pattern type or null
|
||||||
|
*/
|
||||||
|
public static PatternType getByIdentifier(String identifier) {
|
||||||
|
return byString.get(identifier);
|
||||||
|
}
|
||||||
|
}
|
@@ -15,7 +15,7 @@ import org.bukkit.util.StringUtil;
|
|||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
public class GameModeCommand extends VanillaCommand {
|
public class GameModeCommand extends VanillaCommand {
|
||||||
private static final List<String> GAMEMODE_NAMES = ImmutableList.of("adventure", "creative", "survival");
|
private static final List<String> GAMEMODE_NAMES = ImmutableList.of("adventure", "creative", "survival", "spectator");
|
||||||
|
|
||||||
public GameModeCommand() {
|
public GameModeCommand() {
|
||||||
super("gamemode");
|
super("gamemode");
|
||||||
@@ -55,6 +55,8 @@ public class GameModeCommand extends VanillaCommand {
|
|||||||
mode = GameMode.CREATIVE;
|
mode = GameMode.CREATIVE;
|
||||||
} else if (modeArg.equalsIgnoreCase("adventure") || modeArg.equalsIgnoreCase("a")) {
|
} else if (modeArg.equalsIgnoreCase("adventure") || modeArg.equalsIgnoreCase("a")) {
|
||||||
mode = GameMode.ADVENTURE;
|
mode = GameMode.ADVENTURE;
|
||||||
|
} else if (modeArg.equalsIgnoreCase("spectator") || modeArg.equalsIgnoreCase("sp")) {
|
||||||
|
mode = GameMode.SPECTATOR;
|
||||||
} else {
|
} else {
|
||||||
mode = GameMode.SURVIVAL;
|
mode = GameMode.SURVIVAL;
|
||||||
}
|
}
|
||||||
|
261
paper-api/src/main/java/org/bukkit/entity/ArmorStand.java
Normal file
261
paper-api/src/main/java/org/bukkit/entity/ArmorStand.java
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
package org.bukkit.entity;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.util.EulerAngle;
|
||||||
|
|
||||||
|
public interface ArmorStand extends LivingEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the item the armor stand is
|
||||||
|
* currently holding
|
||||||
|
*
|
||||||
|
* @return the held item
|
||||||
|
*/
|
||||||
|
ItemStack getItemInHand();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the item the armor stand is currently
|
||||||
|
* holding
|
||||||
|
*
|
||||||
|
* @param item the item to hold
|
||||||
|
*/
|
||||||
|
void setItemInHand(ItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the item currently being worn
|
||||||
|
* by the armor stand on its feet
|
||||||
|
*
|
||||||
|
* @return the worn item
|
||||||
|
*/
|
||||||
|
ItemStack getBoots();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the item currently being worn
|
||||||
|
* by the armor stand on its feet
|
||||||
|
*
|
||||||
|
* @param item the item to wear
|
||||||
|
*/
|
||||||
|
void setBoots(ItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the item currently being worn
|
||||||
|
* by the armor stand on its legs
|
||||||
|
*
|
||||||
|
* @return the worn item
|
||||||
|
*/
|
||||||
|
ItemStack getLeggings();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the item currently being worn
|
||||||
|
* by the armor stand on its legs
|
||||||
|
*
|
||||||
|
* @param item the item to wear
|
||||||
|
*/
|
||||||
|
void setLeggings(ItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the item currently being worn
|
||||||
|
* by the armor stand on its chest
|
||||||
|
*
|
||||||
|
* @return the worn item
|
||||||
|
*/
|
||||||
|
ItemStack getChestplate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the item currently being worn
|
||||||
|
* by the armor stand on its chest
|
||||||
|
*
|
||||||
|
* @param item the item to wear
|
||||||
|
*/
|
||||||
|
void setChestplate(ItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the item currently being worn
|
||||||
|
* by the armor stand on its head
|
||||||
|
*
|
||||||
|
* @return the worn item
|
||||||
|
*/
|
||||||
|
ItemStack getHelmet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the item currently being worn
|
||||||
|
* by the armor stand on its head
|
||||||
|
*
|
||||||
|
* @param item the item to wear
|
||||||
|
*/
|
||||||
|
void setHelmet(ItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the armor stand's body's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @return the current pose
|
||||||
|
*/
|
||||||
|
EulerAngle getBodyPose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the armor stand's body's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @param pose the current pose
|
||||||
|
*/
|
||||||
|
void setBodyPose(EulerAngle pose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the armor stand's left arm's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @return the current pose
|
||||||
|
*/
|
||||||
|
EulerAngle getLeftArmPose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the armor stand's left arm's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @param pose the current pose
|
||||||
|
*/
|
||||||
|
void setLeftArmPose(EulerAngle pose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the armor stand's right arm's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @return the current pose
|
||||||
|
*/
|
||||||
|
EulerAngle getRightArmPose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the armor stand's right arm's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @param pose the current pose
|
||||||
|
*/
|
||||||
|
void setRightArmPose(EulerAngle pose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the armor stand's left leg's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @return the current pose
|
||||||
|
*/
|
||||||
|
EulerAngle getLeftLegPose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the armor stand's left leg's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @param pose the current pose
|
||||||
|
*/
|
||||||
|
void setLeftLegPose(EulerAngle pose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the armor stand's right leg's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @return the current pose
|
||||||
|
*/
|
||||||
|
EulerAngle getRightLegPose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the armor stand's right leg's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @param pose the current pose
|
||||||
|
*/
|
||||||
|
void setRightLegPose(EulerAngle pose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the armor stand's head's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @return the current pose
|
||||||
|
*/
|
||||||
|
EulerAngle getHeadPose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the armor stand's head's
|
||||||
|
* current pose as a {@link org.bukkit.util.EulerAngle}
|
||||||
|
*
|
||||||
|
* @param pose the current pose
|
||||||
|
*/
|
||||||
|
void setHeadPose(EulerAngle pose);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the armor stand has
|
||||||
|
* a base plate
|
||||||
|
*
|
||||||
|
* @return whether it has a base plate
|
||||||
|
*/
|
||||||
|
boolean hasBasePlate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether the armor stand has a
|
||||||
|
* base plate
|
||||||
|
*
|
||||||
|
* @param basePlate whether is has a base plate
|
||||||
|
*/
|
||||||
|
void setBasePlate(boolean basePlate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether gravity applies to
|
||||||
|
* this armor stand
|
||||||
|
*
|
||||||
|
* @return whether gravity applies
|
||||||
|
*/
|
||||||
|
boolean hasGravity();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether gravity applies to
|
||||||
|
* this armor stand
|
||||||
|
*
|
||||||
|
* @param gravity whether gravity should apply
|
||||||
|
*/
|
||||||
|
void setGravity(boolean gravity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the armor stand should be
|
||||||
|
* visible or not
|
||||||
|
*
|
||||||
|
* @return whether the stand is visible or not
|
||||||
|
*/
|
||||||
|
boolean isVisible();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether the armor stand should be
|
||||||
|
* visible or not
|
||||||
|
*
|
||||||
|
* @param visible whether the stand is visible or not
|
||||||
|
*/
|
||||||
|
void setVisible(boolean visible);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether this armor stand has arms
|
||||||
|
*
|
||||||
|
* @return whether this has arms or not
|
||||||
|
*/
|
||||||
|
boolean hasArms();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether this armor stand has arms
|
||||||
|
*
|
||||||
|
* @param arms whether this has arms or not
|
||||||
|
*/
|
||||||
|
void setArms(boolean arms);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether this armor stand is scaled
|
||||||
|
* down
|
||||||
|
*
|
||||||
|
* @return whether this is scaled down
|
||||||
|
*/
|
||||||
|
boolean isSmall();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether this armor stand is scaled
|
||||||
|
* down
|
||||||
|
*
|
||||||
|
* @param small whether this is scaled down
|
||||||
|
*/
|
||||||
|
void setSmall(boolean small);
|
||||||
|
}
|
@@ -26,6 +26,8 @@ public enum CreatureType {
|
|||||||
BLAZE("Blaze", Blaze.class, 61),
|
BLAZE("Blaze", Blaze.class, 61),
|
||||||
MAGMA_CUBE("LavaSlime", MagmaCube.class, 62),
|
MAGMA_CUBE("LavaSlime", MagmaCube.class, 62),
|
||||||
ENDER_DRAGON("EnderDragon", EnderDragon.class, 63),
|
ENDER_DRAGON("EnderDragon", EnderDragon.class, 63),
|
||||||
|
ENDERMITE("Endermite", Endermite.class, 67),
|
||||||
|
GUARDIAN("Guardian", Guardian.class, 68),
|
||||||
PIG("Pig", Pig.class, 90),
|
PIG("Pig", Pig.class, 90),
|
||||||
SHEEP("Sheep", Sheep.class, 91),
|
SHEEP("Sheep", Sheep.class, 91),
|
||||||
COW("Cow", Cow.class, 92),
|
COW("Cow", Cow.class, 92),
|
||||||
@@ -34,6 +36,7 @@ public enum CreatureType {
|
|||||||
WOLF("Wolf", Wolf.class, 95),
|
WOLF("Wolf", Wolf.class, 95),
|
||||||
MUSHROOM_COW("MushroomCow", MushroomCow.class, 96),
|
MUSHROOM_COW("MushroomCow", MushroomCow.class, 96),
|
||||||
SNOWMAN("SnowMan", Snowman.class, 97),
|
SNOWMAN("SnowMan", Snowman.class, 97),
|
||||||
|
RABBIT("Rabbit", Rabbit.class, 101),
|
||||||
VILLAGER("Villager", Villager.class, 120);
|
VILLAGER("Villager", Villager.class, 120);
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
4
paper-api/src/main/java/org/bukkit/entity/Endermite.java
Normal file
4
paper-api/src/main/java/org/bukkit/entity/Endermite.java
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
package org.bukkit.entity;
|
||||||
|
|
||||||
|
public interface Endermite extends Monster {
|
||||||
|
}
|
@@ -295,4 +295,49 @@ public interface Entity extends Metadatable {
|
|||||||
* @return The current vehicle.
|
* @return The current vehicle.
|
||||||
*/
|
*/
|
||||||
public Entity getVehicle();
|
public Entity getVehicle();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a custom name on a mob. This name will be used in death messages
|
||||||
|
* and can be sent to the client as a nameplate over the mob.
|
||||||
|
* <p>
|
||||||
|
* Setting the name to null or an empty string will clear it.
|
||||||
|
* <p>
|
||||||
|
* This value has no effect on players, they will always use their real
|
||||||
|
* name.
|
||||||
|
*
|
||||||
|
* @param name the name to set
|
||||||
|
*/
|
||||||
|
public void setCustomName(String name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the custom name on a mob. If there is no name this method will
|
||||||
|
* return null.
|
||||||
|
* <p>
|
||||||
|
* This value has no effect on players, they will always use their real
|
||||||
|
* name.
|
||||||
|
*
|
||||||
|
* @return name of the mob or null
|
||||||
|
*/
|
||||||
|
public String getCustomName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether or not to display the mob's custom name client side. The
|
||||||
|
* name will be displayed above the mob similarly to a player.
|
||||||
|
* <p>
|
||||||
|
* This value has no effect on players, they will always display their
|
||||||
|
* name.
|
||||||
|
*
|
||||||
|
* @param flag custom name or not
|
||||||
|
*/
|
||||||
|
public void setCustomNameVisible(boolean flag);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether or not the mob's custom name is displayed client side.
|
||||||
|
* <p>
|
||||||
|
* This value has no effect on players, they will always display their
|
||||||
|
* name.
|
||||||
|
*
|
||||||
|
* @return if the custom name is displayed
|
||||||
|
*/
|
||||||
|
public boolean isCustomNameVisible();
|
||||||
}
|
}
|
||||||
|
@@ -81,6 +81,7 @@ public enum EntityType {
|
|||||||
*/
|
*/
|
||||||
FALLING_BLOCK("FallingSand", FallingBlock.class, 21, false),
|
FALLING_BLOCK("FallingSand", FallingBlock.class, 21, false),
|
||||||
FIREWORK("FireworksRocketEntity", Firework.class, 22, false),
|
FIREWORK("FireworksRocketEntity", Firework.class, 22, false),
|
||||||
|
ARMOR_STAND("ArmorStand", ArmorStand.class, 30, false),
|
||||||
/**
|
/**
|
||||||
* @see CommandMinecart
|
* @see CommandMinecart
|
||||||
*/
|
*/
|
||||||
@@ -130,6 +131,8 @@ public enum EntityType {
|
|||||||
WITHER("WitherBoss", Wither.class, 64),
|
WITHER("WitherBoss", Wither.class, 64),
|
||||||
BAT("Bat", Bat.class, 65),
|
BAT("Bat", Bat.class, 65),
|
||||||
WITCH("Witch", Witch.class, 66),
|
WITCH("Witch", Witch.class, 66),
|
||||||
|
ENDERMITE("Endermite", Endermite.class, 67),
|
||||||
|
GUARDIAN("Guardian", Guardian.class, 68),
|
||||||
PIG("Pig", Pig.class, 90),
|
PIG("Pig", Pig.class, 90),
|
||||||
SHEEP("Sheep", Sheep.class, 91),
|
SHEEP("Sheep", Sheep.class, 91),
|
||||||
COW("Cow", Cow.class, 92),
|
COW("Cow", Cow.class, 92),
|
||||||
@@ -141,6 +144,7 @@ public enum EntityType {
|
|||||||
OCELOT("Ozelot", Ocelot.class, 98),
|
OCELOT("Ozelot", Ocelot.class, 98),
|
||||||
IRON_GOLEM("VillagerGolem", IronGolem.class, 99),
|
IRON_GOLEM("VillagerGolem", IronGolem.class, 99),
|
||||||
HORSE("EntityHorse", Horse.class, 100),
|
HORSE("EntityHorse", Horse.class, 100),
|
||||||
|
RABBIT("Rabbit", Rabbit.class, 101),
|
||||||
VILLAGER("Villager", Villager.class, 120),
|
VILLAGER("Villager", Villager.class, 120),
|
||||||
ENDER_CRYSTAL("EnderCrystal", EnderCrystal.class, 200),
|
ENDER_CRYSTAL("EnderCrystal", EnderCrystal.class, 200),
|
||||||
// These don't have an entity ID in nms.EntityTypes.
|
// These don't have an entity ID in nms.EntityTypes.
|
||||||
|
4
paper-api/src/main/java/org/bukkit/entity/Guardian.java
Normal file
4
paper-api/src/main/java/org/bukkit/entity/Guardian.java
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
package org.bukkit.entity;
|
||||||
|
|
||||||
|
public interface Guardian extends Monster {
|
||||||
|
}
|
@@ -320,51 +320,6 @@ public interface LivingEntity extends Entity, Damageable, ProjectileSource {
|
|||||||
*/
|
*/
|
||||||
public boolean getCanPickupItems();
|
public boolean getCanPickupItems();
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a custom name on a mob. This name will be used in death messages
|
|
||||||
* and can be sent to the client as a nameplate over the mob.
|
|
||||||
* <p>
|
|
||||||
* Setting the name to null or an empty string will clear it.
|
|
||||||
* <p>
|
|
||||||
* This value has no effect on players, they will always use their real
|
|
||||||
* name.
|
|
||||||
*
|
|
||||||
* @param name the name to set
|
|
||||||
*/
|
|
||||||
public void setCustomName(String name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the custom name on a mob. If there is no name this method will
|
|
||||||
* return null.
|
|
||||||
* <p>
|
|
||||||
* This value has no effect on players, they will always use their real
|
|
||||||
* name.
|
|
||||||
*
|
|
||||||
* @return name of the mob or null
|
|
||||||
*/
|
|
||||||
public String getCustomName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets whether or not to display the mob's custom name client side. The
|
|
||||||
* name will be displayed above the mob similarly to a player.
|
|
||||||
* <p>
|
|
||||||
* This value has no effect on players, they will always display their
|
|
||||||
* name.
|
|
||||||
*
|
|
||||||
* @param flag custom name or not
|
|
||||||
*/
|
|
||||||
public void setCustomNameVisible(boolean flag);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets whether or not the mob's custom name is displayed client side.
|
|
||||||
* <p>
|
|
||||||
* This value has no effect on players, they will always display their
|
|
||||||
* name.
|
|
||||||
*
|
|
||||||
* @return if the custom name is displayed
|
|
||||||
*/
|
|
||||||
public boolean isCustomNameVisible();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the entity is currently leashed.
|
* Returns whether the entity is currently leashed.
|
||||||
*
|
*
|
||||||
|
4
paper-api/src/main/java/org/bukkit/entity/Rabbit.java
Normal file
4
paper-api/src/main/java/org/bukkit/entity/Rabbit.java
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
package org.bukkit.entity;
|
||||||
|
|
||||||
|
public interface Rabbit extends Animals {
|
||||||
|
}
|
@@ -3,4 +3,4 @@ package org.bukkit.entity;
|
|||||||
/**
|
/**
|
||||||
* Represents a Water Mob
|
* Represents a Water Mob
|
||||||
*/
|
*/
|
||||||
public interface WaterMob extends Creature {}
|
public interface WaterMob extends LivingEntity {}
|
||||||
|
@@ -16,17 +16,28 @@ public class BlockPistonExtendEvent extends BlockPistonEvent {
|
|||||||
private final int length;
|
private final int length;
|
||||||
private List<Block> blocks;
|
private List<Block> blocks;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public BlockPistonExtendEvent(final Block block, final int length, final BlockFace direction) {
|
public BlockPistonExtendEvent(final Block block, final int length, final BlockFace direction) {
|
||||||
super(block, direction);
|
super(block, direction);
|
||||||
|
|
||||||
this.length = length;
|
this.length = length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BlockPistonExtendEvent(final Block block, final List<Block> blocks, final BlockFace direction) {
|
||||||
|
super(block, direction);
|
||||||
|
|
||||||
|
this.length = blocks.size();
|
||||||
|
this.blocks = blocks;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the amount of blocks which will be moved while extending.
|
* Get the amount of blocks which will be moved while extending.
|
||||||
*
|
*
|
||||||
* @return the amount of moving blocks
|
* @return the amount of moving blocks
|
||||||
|
* @deprecated slime blocks make the value of this method
|
||||||
|
* inaccurate due to blocks being pushed at the side
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public int getLength() {
|
public int getLength() {
|
||||||
return this.length;
|
return this.length;
|
||||||
}
|
}
|
||||||
|
@@ -136,6 +136,15 @@ public class EntityTargetEvent extends EntityEvent implements Cancellable {
|
|||||||
/**
|
/**
|
||||||
* For custom calls to the event.
|
* For custom calls to the event.
|
||||||
*/
|
*/
|
||||||
CUSTOM
|
CUSTOM,
|
||||||
|
/**
|
||||||
|
* When the entity doesn't have a target, so it attacks the nearest
|
||||||
|
* entity
|
||||||
|
*/
|
||||||
|
CLOSEST_ENTITY,
|
||||||
|
/**
|
||||||
|
* A currently unknown reason for the entity changing target.
|
||||||
|
*/
|
||||||
|
UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -30,10 +30,10 @@ public enum InventoryType {
|
|||||||
*/
|
*/
|
||||||
CRAFTING(5,"Crafting"),
|
CRAFTING(5,"Crafting"),
|
||||||
/**
|
/**
|
||||||
* An enchantment table inventory, with one CRAFTING slot and three
|
* An enchantment table inventory, with two CRAFTING slots and three
|
||||||
* enchanting buttons.
|
* enchanting buttons.
|
||||||
*/
|
*/
|
||||||
ENCHANTING(1,"Enchanting"),
|
ENCHANTING(2,"Enchanting"),
|
||||||
/**
|
/**
|
||||||
* A brewing stand inventory, with one FUEL slot and three CRAFTING slots.
|
* A brewing stand inventory, with one FUEL slot and three CRAFTING slots.
|
||||||
*/
|
*/
|
||||||
|
@@ -0,0 +1,22 @@
|
|||||||
|
package org.bukkit.event.player;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents an event that is called when a player right clicks an entity
|
||||||
|
* with a location on the entity the was clicked.
|
||||||
|
*/
|
||||||
|
public class PlayerInteractAtEntityEvent extends PlayerInteractEntityEvent {
|
||||||
|
private final Vector position;
|
||||||
|
|
||||||
|
public PlayerInteractAtEntityEvent(Player who, Entity clickedEntity, Vector position) {
|
||||||
|
super(who, clickedEntity);
|
||||||
|
this.position = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector getClickedPosition() {
|
||||||
|
return position.clone();
|
||||||
|
}
|
||||||
|
}
|
@@ -18,4 +18,18 @@ public interface EnchantingInventory extends Inventory {
|
|||||||
* @return The current item.
|
* @return The current item.
|
||||||
*/
|
*/
|
||||||
ItemStack getItem();
|
ItemStack getItem();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the secondary item being used for the enchant.
|
||||||
|
*
|
||||||
|
* @param item The new item
|
||||||
|
*/
|
||||||
|
void setSecondary(ItemStack item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the secondary item being used for the enchant.
|
||||||
|
*
|
||||||
|
* @return The second item
|
||||||
|
*/
|
||||||
|
ItemStack getSecondary();
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,76 @@
|
|||||||
|
package org.bukkit.inventory.meta;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.block.banner.Pattern;
|
||||||
|
|
||||||
|
public interface BannerMeta extends ItemMeta {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the base color for this banner
|
||||||
|
*
|
||||||
|
* @return the base color
|
||||||
|
*/
|
||||||
|
DyeColor getBaseColor();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the base color for this banner
|
||||||
|
*
|
||||||
|
* @param color the base color
|
||||||
|
*/
|
||||||
|
void setBaseColor(DyeColor color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of patterns on this banner
|
||||||
|
*
|
||||||
|
* @return the patterns
|
||||||
|
*/
|
||||||
|
List<Pattern> getPatterns();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the patterns used on this banner
|
||||||
|
*
|
||||||
|
* @param patterns the new list of patterns
|
||||||
|
*/
|
||||||
|
void setPatterns(List<Pattern> patterns);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a new pattern on top of the existing
|
||||||
|
* patterns
|
||||||
|
*
|
||||||
|
* @param pattern the new pattern to add
|
||||||
|
*/
|
||||||
|
void addPattern(Pattern pattern);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pattern at the specified index
|
||||||
|
*
|
||||||
|
* @param i the index
|
||||||
|
* @return the pattern
|
||||||
|
*/
|
||||||
|
Pattern getPattern(int i);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the pattern at the specified index
|
||||||
|
*
|
||||||
|
* @param i the index
|
||||||
|
* @return the removed pattern
|
||||||
|
*/
|
||||||
|
Pattern removePattern(int i);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the pattern at the specified index
|
||||||
|
*
|
||||||
|
* @param i the index
|
||||||
|
* @param pattern the new pattern
|
||||||
|
*/
|
||||||
|
void setPattern(int i, Pattern pattern);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of patterns on this
|
||||||
|
* banner
|
||||||
|
*
|
||||||
|
* @return the number of patterns
|
||||||
|
*/
|
||||||
|
int numberOfPatterns();
|
||||||
|
}
|
232
paper-api/src/main/java/org/bukkit/material/Banner.java
Normal file
232
paper-api/src/main/java/org/bukkit/material/Banner.java
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
package org.bukkit.material;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
|
||||||
|
public class Banner extends MaterialData implements Attachable {
|
||||||
|
|
||||||
|
public Banner() {
|
||||||
|
super(Material.BANNER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Banner(Material type) {
|
||||||
|
super(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @deprecated Magic value
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public Banner(int type) {
|
||||||
|
super(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @deprecated Magic value
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public Banner(Material type, byte data) {
|
||||||
|
super(type, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @deprecated Magic value
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public Banner(int type, byte data) {
|
||||||
|
super(type, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWallBanner() {
|
||||||
|
return getItemType() == Material.WALL_BANNER;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockFace getAttachedFace() {
|
||||||
|
if (isWallBanner()) {
|
||||||
|
byte data = getData();
|
||||||
|
|
||||||
|
switch (data) {
|
||||||
|
case 0x2:
|
||||||
|
return BlockFace.SOUTH;
|
||||||
|
|
||||||
|
case 0x3:
|
||||||
|
return BlockFace.NORTH;
|
||||||
|
|
||||||
|
case 0x4:
|
||||||
|
return BlockFace.EAST;
|
||||||
|
|
||||||
|
case 0x5:
|
||||||
|
return BlockFace.WEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return BlockFace.DOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockFace getFacing() {
|
||||||
|
byte data = getData();
|
||||||
|
|
||||||
|
if (!isWallBanner()) {
|
||||||
|
switch (data) {
|
||||||
|
case 0x0:
|
||||||
|
return BlockFace.SOUTH;
|
||||||
|
|
||||||
|
case 0x1:
|
||||||
|
return BlockFace.SOUTH_SOUTH_WEST;
|
||||||
|
|
||||||
|
case 0x2:
|
||||||
|
return BlockFace.SOUTH_WEST;
|
||||||
|
|
||||||
|
case 0x3:
|
||||||
|
return BlockFace.WEST_SOUTH_WEST;
|
||||||
|
|
||||||
|
case 0x4:
|
||||||
|
return BlockFace.WEST;
|
||||||
|
|
||||||
|
case 0x5:
|
||||||
|
return BlockFace.WEST_NORTH_WEST;
|
||||||
|
|
||||||
|
case 0x6:
|
||||||
|
return BlockFace.NORTH_WEST;
|
||||||
|
|
||||||
|
case 0x7:
|
||||||
|
return BlockFace.NORTH_NORTH_WEST;
|
||||||
|
|
||||||
|
case 0x8:
|
||||||
|
return BlockFace.NORTH;
|
||||||
|
|
||||||
|
case 0x9:
|
||||||
|
return BlockFace.NORTH_NORTH_EAST;
|
||||||
|
|
||||||
|
case 0xA:
|
||||||
|
return BlockFace.NORTH_EAST;
|
||||||
|
|
||||||
|
case 0xB:
|
||||||
|
return BlockFace.EAST_NORTH_EAST;
|
||||||
|
|
||||||
|
case 0xC:
|
||||||
|
return BlockFace.EAST;
|
||||||
|
|
||||||
|
case 0xD:
|
||||||
|
return BlockFace.EAST_SOUTH_EAST;
|
||||||
|
|
||||||
|
case 0xE:
|
||||||
|
return BlockFace.SOUTH_EAST;
|
||||||
|
|
||||||
|
case 0xF:
|
||||||
|
return BlockFace.SOUTH_SOUTH_EAST;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return getAttachedFace().getOppositeFace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFacingDirection(BlockFace face) {
|
||||||
|
byte data;
|
||||||
|
|
||||||
|
if (isWallBanner()) {
|
||||||
|
switch (face) {
|
||||||
|
case NORTH:
|
||||||
|
data = 0x2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SOUTH:
|
||||||
|
data = 0x3;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WEST:
|
||||||
|
data = 0x4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EAST:
|
||||||
|
default:
|
||||||
|
data = 0x5;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (face) {
|
||||||
|
case SOUTH:
|
||||||
|
data = 0x0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SOUTH_SOUTH_WEST:
|
||||||
|
data = 0x1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SOUTH_WEST:
|
||||||
|
data = 0x2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WEST_SOUTH_WEST:
|
||||||
|
data = 0x3;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WEST:
|
||||||
|
data = 0x4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WEST_NORTH_WEST:
|
||||||
|
data = 0x5;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NORTH_WEST:
|
||||||
|
data = 0x6;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NORTH_NORTH_WEST:
|
||||||
|
data = 0x7;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NORTH:
|
||||||
|
data = 0x8;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NORTH_NORTH_EAST:
|
||||||
|
data = 0x9;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NORTH_EAST:
|
||||||
|
data = 0xA;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EAST_NORTH_EAST:
|
||||||
|
data = 0xB;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EAST:
|
||||||
|
data = 0xC;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EAST_SOUTH_EAST:
|
||||||
|
data = 0xD;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SOUTH_SOUTH_EAST:
|
||||||
|
data = 0xF;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SOUTH_EAST:
|
||||||
|
default:
|
||||||
|
data = 0xE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setData(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString() + " facing " + getFacing();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Banner clone() {
|
||||||
|
return (Banner) super.clone();
|
||||||
|
}
|
||||||
|
}
|
@@ -232,11 +232,12 @@ public final class JavaPluginLoader implements PluginLoader {
|
|||||||
Set<Method> methods;
|
Set<Method> methods;
|
||||||
try {
|
try {
|
||||||
Method[] publicMethods = listener.getClass().getMethods();
|
Method[] publicMethods = listener.getClass().getMethods();
|
||||||
methods = new HashSet<Method>(publicMethods.length, Float.MAX_VALUE);
|
Method[] privateMethods = listener.getClass().getDeclaredMethods();
|
||||||
|
methods = new HashSet<Method>(publicMethods.length + privateMethods.length, 1.0f);
|
||||||
for (Method method : publicMethods) {
|
for (Method method : publicMethods) {
|
||||||
methods.add(method);
|
methods.add(method);
|
||||||
}
|
}
|
||||||
for (Method method : listener.getClass().getDeclaredMethods()) {
|
for (Method method : privateMethods) {
|
||||||
methods.add(method);
|
methods.add(method);
|
||||||
}
|
}
|
||||||
} catch (NoClassDefFoundError e) {
|
} catch (NoClassDefFoundError e) {
|
||||||
|
@@ -14,6 +14,7 @@ public enum PotionType {
|
|||||||
INSTANT_DAMAGE(12, PotionEffectType.HARM, 2),
|
INSTANT_DAMAGE(12, PotionEffectType.HARM, 2),
|
||||||
WATER_BREATHING(13, PotionEffectType.WATER_BREATHING, 1),
|
WATER_BREATHING(13, PotionEffectType.WATER_BREATHING, 1),
|
||||||
INVISIBILITY(14, PotionEffectType.INVISIBILITY, 1),
|
INVISIBILITY(14, PotionEffectType.INVISIBILITY, 1),
|
||||||
|
JUMP(15, PotionEffectType.JUMP, 2)
|
||||||
;
|
;
|
||||||
|
|
||||||
private final int damageValue, maxLevel;
|
private final int damageValue, maxLevel;
|
||||||
|
147
paper-api/src/main/java/org/bukkit/util/EulerAngle.java
Normal file
147
paper-api/src/main/java/org/bukkit/util/EulerAngle.java
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
package org.bukkit.util;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* EulerAngle is used to represent 3 angles, one for each
|
||||||
|
* axis (x, y, z). The angles are in radians
|
||||||
|
*/
|
||||||
|
public class EulerAngle {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A EulerAngle with every axis set to 0
|
||||||
|
*/
|
||||||
|
public static final EulerAngle ZERO = new EulerAngle(0, 0, 0);
|
||||||
|
|
||||||
|
private final double x;
|
||||||
|
private final double y;
|
||||||
|
private final double z;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a EularAngle with each axis set to the
|
||||||
|
* passed angle in radians
|
||||||
|
*
|
||||||
|
* @param x the angle for the x axis in radians
|
||||||
|
* @param y the angle for the x axis in radians
|
||||||
|
* @param z the angle for the x axis in radians
|
||||||
|
*/
|
||||||
|
public EulerAngle(double x, double y, double z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the angle on the x axis in radians
|
||||||
|
*
|
||||||
|
* @return the angle in radians
|
||||||
|
*/
|
||||||
|
public double getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the angle on the y axis in radians
|
||||||
|
*
|
||||||
|
* @return the angle in radians
|
||||||
|
*/
|
||||||
|
public double getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the angle on the z axis in radians
|
||||||
|
*
|
||||||
|
* @return the angle in radians
|
||||||
|
*/
|
||||||
|
public double getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a EulerAngle which is the result of changing
|
||||||
|
* the x axis to the passed angle
|
||||||
|
*
|
||||||
|
* @param x the angle in radians
|
||||||
|
* @return the resultant EulerAngle
|
||||||
|
*/
|
||||||
|
public EulerAngle setX(double x) {
|
||||||
|
return new EulerAngle(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a EulerAngle which is the result of changing
|
||||||
|
* the y axis to the passed angle
|
||||||
|
*
|
||||||
|
* @param y the angle in radians
|
||||||
|
* @return the resultant EulerAngle
|
||||||
|
*/
|
||||||
|
public EulerAngle setY(double y) {
|
||||||
|
return new EulerAngle(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a EulerAngle which is the result of changing
|
||||||
|
* the z axis to the passed angle
|
||||||
|
*
|
||||||
|
* @param z the angle in radians
|
||||||
|
* @return the resultant EulerAngle
|
||||||
|
*/
|
||||||
|
public EulerAngle setZ(double z) {
|
||||||
|
return new EulerAngle(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new EulerAngle which is the result of adding
|
||||||
|
* the x, y, z components to this EulerAngle
|
||||||
|
*
|
||||||
|
* @param x the angle to add to the x axis in radians
|
||||||
|
* @param y the angle to add to the y axis in radians
|
||||||
|
* @param z the angle to add to the z axis in radians
|
||||||
|
* @return the resultant EulerAngle
|
||||||
|
*/
|
||||||
|
public EulerAngle add(double x, double y, double z) {
|
||||||
|
return new EulerAngle(
|
||||||
|
this.x + x,
|
||||||
|
this.y + y,
|
||||||
|
this.z + z
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new EulerAngle which is the result of subtracting
|
||||||
|
* the x, y, z components to this EulerAngle
|
||||||
|
*
|
||||||
|
* @param x the angle to subtract to the x axis in radians
|
||||||
|
* @param y the angle to subtract to the y axis in radians
|
||||||
|
* @param z the angle to subtract to the z axis in radians
|
||||||
|
* @return the resultant EulerAngle
|
||||||
|
*/
|
||||||
|
public EulerAngle subtract(double x, double y, double z) {
|
||||||
|
return add(-x, -y, -z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
|
||||||
|
EulerAngle that = (EulerAngle) o;
|
||||||
|
|
||||||
|
return Double.compare(that.x, x) == 0
|
||||||
|
&& Double.compare(that.y, y) == 0
|
||||||
|
&& Double.compare(that.z, z) == 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result;
|
||||||
|
long temp;
|
||||||
|
temp = Double.doubleToLongBits(x);
|
||||||
|
result = (int) (temp ^ (temp >>> 32));
|
||||||
|
temp = Double.doubleToLongBits(y);
|
||||||
|
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
||||||
|
temp = Double.doubleToLongBits(z);
|
||||||
|
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user