diff --git a/gradle.properties b/gradle.properties
index b12f90482a..7517a26242 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,5 +1,5 @@
group=org.spongepowered
-version=12.1.0-SNAPSHOT
+version=13.0.0-SNAPSHOT
organization=SpongePowered
projectUrl=https://www.spongepowered.org
projectDescription=A plugin API for Minecraft: Java Edition
diff --git a/src/main/java/org/spongepowered/api/advancement/criteria/trigger/Triggers.java b/src/main/java/org/spongepowered/api/advancement/criteria/trigger/Triggers.java
index 17f5bd3989..5ab296e371 100644
--- a/src/main/java/org/spongepowered/api/advancement/criteria/trigger/Triggers.java
+++ b/src/main/java/org/spongepowered/api/advancement/criteria/trigger/Triggers.java
@@ -94,7 +94,7 @@ public final class Triggers {
public static final DefaultedRegistryReference> ITEM_USED_ON_BLOCK = Triggers.key(ResourceKey.minecraft("item_used_on_block"));
- public static final DefaultedRegistryReference> KILLED_BY_CROSSBOW = Triggers.key(ResourceKey.minecraft("killed_by_crossbow"));
+ public static final DefaultedRegistryReference> KILLED_BY_ARROW = Triggers.key(ResourceKey.minecraft("killed_by_arrow"));
public static final DefaultedRegistryReference> KILL_MOB_NEAR_SCULK_CATALYST = Triggers.key(ResourceKey.minecraft("kill_mob_near_sculk_catalyst"));
diff --git a/src/main/java/org/spongepowered/api/block/BlockTypes.java b/src/main/java/org/spongepowered/api/block/BlockTypes.java
index e41e0b38be..37e5b2b470 100644
--- a/src/main/java/org/spongepowered/api/block/BlockTypes.java
+++ b/src/main/java/org/spongepowered/api/block/BlockTypes.java
@@ -24,6 +24,7 @@
*/
package org.spongepowered.api.block;
+import org.jetbrains.annotations.ApiStatus;
import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.registry.DefaultedRegistryReference;
@@ -32,6 +33,7 @@
import org.spongepowered.api.registry.RegistryScope;
import org.spongepowered.api.registry.RegistryScopes;
import org.spongepowered.api.registry.RegistryTypes;
+import org.spongepowered.api.util.annotation.Experimental;
/**
*
@@ -496,6 +498,10 @@ public final class BlockTypes {
public static final DefaultedRegistryReference CRAFTING_TABLE = BlockTypes.key(ResourceKey.minecraft("crafting_table"));
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference CREAKING_HEART = BlockTypes.key(ResourceKey.minecraft("creaking_heart"));
+
public static final DefaultedRegistryReference CREEPER_HEAD = BlockTypes.key(ResourceKey.minecraft("creeper_head"));
public static final DefaultedRegistryReference CREEPER_WALL_HEAD = BlockTypes.key(ResourceKey.minecraft("creeper_wall_head"));
@@ -1336,6 +1342,86 @@ public final class BlockTypes {
public static final DefaultedRegistryReference PACKED_MUD = BlockTypes.key(ResourceKey.minecraft("packed_mud"));
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_HANGING_MOSS = BlockTypes.key(ResourceKey.minecraft("pale_hanging_moss"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_MOSS_BLOCK = BlockTypes.key(ResourceKey.minecraft("pale_moss_block"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_MOSS_CARPET = BlockTypes.key(ResourceKey.minecraft("pale_moss_carpet"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_BUTTON = BlockTypes.key(ResourceKey.minecraft("pale_oak_button"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_DOOR = BlockTypes.key(ResourceKey.minecraft("pale_oak_door"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_FENCE = BlockTypes.key(ResourceKey.minecraft("pale_oak_fence"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_FENCE_GATE = BlockTypes.key(ResourceKey.minecraft("pale_oak_fence_gate"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_HANGING_SIGN = BlockTypes.key(ResourceKey.minecraft("pale_oak_hanging_sign"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_LEAVES = BlockTypes.key(ResourceKey.minecraft("pale_oak_leaves"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_LOG = BlockTypes.key(ResourceKey.minecraft("pale_oak_log"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_PLANKS = BlockTypes.key(ResourceKey.minecraft("pale_oak_planks"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_PRESSURE_PLATE = BlockTypes.key(ResourceKey.minecraft("pale_oak_pressure_plate"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_SAPLING = BlockTypes.key(ResourceKey.minecraft("pale_oak_sapling"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_SIGN = BlockTypes.key(ResourceKey.minecraft("pale_oak_sign"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_SLAB = BlockTypes.key(ResourceKey.minecraft("pale_oak_slab"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_STAIRS = BlockTypes.key(ResourceKey.minecraft("pale_oak_stairs"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_TRAPDOOR = BlockTypes.key(ResourceKey.minecraft("pale_oak_trapdoor"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_WALL_HANGING_SIGN = BlockTypes.key(ResourceKey.minecraft("pale_oak_wall_hanging_sign"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_WALL_SIGN = BlockTypes.key(ResourceKey.minecraft("pale_oak_wall_sign"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference PALE_OAK_WOOD = BlockTypes.key(ResourceKey.minecraft("pale_oak_wood"));
+
public static final DefaultedRegistryReference PEARLESCENT_FROGLIGHT = BlockTypes.key(ResourceKey.minecraft("pearlescent_froglight"));
public static final DefaultedRegistryReference PEONY = BlockTypes.key(ResourceKey.minecraft("peony"));
@@ -1502,6 +1588,10 @@ public final class BlockTypes {
public static final DefaultedRegistryReference POTTED_OXEYE_DAISY = BlockTypes.key(ResourceKey.minecraft("potted_oxeye_daisy"));
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference POTTED_PALE_OAK_SAPLING = BlockTypes.key(ResourceKey.minecraft("potted_pale_oak_sapling"));
+
public static final DefaultedRegistryReference POTTED_PINK_TULIP = BlockTypes.key(ResourceKey.minecraft("potted_pink_tulip"));
public static final DefaultedRegistryReference POTTED_POPPY = BlockTypes.key(ResourceKey.minecraft("potted_poppy"));
@@ -1864,6 +1954,14 @@ public final class BlockTypes {
public static final DefaultedRegistryReference STRIPPED_OAK_WOOD = BlockTypes.key(ResourceKey.minecraft("stripped_oak_wood"));
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference STRIPPED_PALE_OAK_LOG = BlockTypes.key(ResourceKey.minecraft("stripped_pale_oak_log"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference STRIPPED_PALE_OAK_WOOD = BlockTypes.key(ResourceKey.minecraft("stripped_pale_oak_wood"));
+
public static final DefaultedRegistryReference STRIPPED_SPRUCE_LOG = BlockTypes.key(ResourceKey.minecraft("stripped_spruce_log"));
public static final DefaultedRegistryReference STRIPPED_SPRUCE_WOOD = BlockTypes.key(ResourceKey.minecraft("stripped_spruce_wood"));
diff --git a/src/main/java/org/spongepowered/api/block/entity/BlockEntityTypes.java b/src/main/java/org/spongepowered/api/block/entity/BlockEntityTypes.java
index 610f4eef81..073f16c7de 100644
--- a/src/main/java/org/spongepowered/api/block/entity/BlockEntityTypes.java
+++ b/src/main/java/org/spongepowered/api/block/entity/BlockEntityTypes.java
@@ -74,6 +74,8 @@ public final class BlockEntityTypes {
public static final DefaultedRegistryReference CRAFTER = BlockEntityTypes.key(ResourceKey.minecraft("crafter"));
+ public static final DefaultedRegistryReference CREAKING_HEART = BlockEntityTypes.key(ResourceKey.minecraft("creaking_heart"));
+
public static final DefaultedRegistryReference DAYLIGHT_DETECTOR = BlockEntityTypes.key(ResourceKey.minecraft("daylight_detector"));
public static final DefaultedRegistryReference DECORATED_POT = BlockEntityTypes.key(ResourceKey.minecraft("decorated_pot"));
diff --git a/src/main/java/org/spongepowered/api/block/entity/CreakingHeart.java b/src/main/java/org/spongepowered/api/block/entity/CreakingHeart.java
new file mode 100644
index 0000000000..98a981ddde
--- /dev/null
+++ b/src/main/java/org/spongepowered/api/block/entity/CreakingHeart.java
@@ -0,0 +1,39 @@
+/*
+ * This file is part of SpongeAPI, licensed under the MIT License (MIT).
+ *
+ * Copyright (c) SpongePowered
+ * Copyright (c) contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package org.spongepowered.api.block.entity;
+
+import org.jetbrains.annotations.ApiStatus;
+import org.spongepowered.api.util.annotation.Experimental;
+
+/**
+ * Represents a CreakingHeart block entity.
+ *
+ * @see Creaking Heart
+ */
+@Experimental("winter_drop")
+@ApiStatus.Experimental
+public interface CreakingHeart extends BlockEntity {
+
+}
diff --git a/src/main/java/org/spongepowered/api/data/BlockStateKeys.java b/src/main/java/org/spongepowered/api/data/BlockStateKeys.java
index 32c50669fa..b0a396239c 100644
--- a/src/main/java/org/spongepowered/api/data/BlockStateKeys.java
+++ b/src/main/java/org/spongepowered/api/data/BlockStateKeys.java
@@ -30,6 +30,7 @@
import org.spongepowered.api.data.type.BellAttachmentType;
import org.spongepowered.api.data.type.ChestAttachmentType;
import org.spongepowered.api.data.type.ComparatorMode;
+import org.spongepowered.api.data.type.CreakingHeart;
import org.spongepowered.api.data.type.DoorHinge;
import org.spongepowered.api.data.type.DripstoneSegment;
import org.spongepowered.api.data.type.InstrumentType;
@@ -116,6 +117,8 @@ public final class BlockStateKeys {
public static final Key> CRAFTING = BlockStateKeys.key(ResourceKey.minecraft("property/crafting"), Boolean.class);
+ public static final Key> CREAKING = BlockStateKeys.key(ResourceKey.minecraft("property/creaking"), CreakingHeart.class);
+
public static final Key> DELAY = BlockStateKeys.key(ResourceKey.minecraft("property/delay"), Integer.class);
public static final Key> DISARMED = BlockStateKeys.key(ResourceKey.minecraft("property/disarmed"), Boolean.class);
@@ -264,6 +267,8 @@ public final class BlockStateKeys {
public static final Key> TILT = BlockStateKeys.key(ResourceKey.minecraft("property/tilt"), Tilt.class);
+ public static final Key> TIP = BlockStateKeys.key(ResourceKey.minecraft("property/tip"), Boolean.class);
+
public static final Key> TRIAL_SPAWNER_STATE = BlockStateKeys.key(ResourceKey.minecraft("property/trial_spawner_state"), TrialSpawnerState.class);
public static final Key> TRIGGERED = BlockStateKeys.key(ResourceKey.minecraft("property/triggered"), Boolean.class);
diff --git a/src/main/java/org/spongepowered/api/data/Keys.java b/src/main/java/org/spongepowered/api/data/Keys.java
index cc9a70bc0a..9a8e751fc0 100644
--- a/src/main/java/org/spongepowered/api/data/Keys.java
+++ b/src/main/java/org/spongepowered/api/data/Keys.java
@@ -34,6 +34,7 @@
import org.spongepowered.api.block.entity.Banner;
import org.spongepowered.api.block.entity.BlockEntity;
import org.spongepowered.api.block.entity.CommandBlock;
+import org.spongepowered.api.block.entity.CreakingHeart;
import org.spongepowered.api.block.entity.EndGateway;
import org.spongepowered.api.block.entity.Jukebox;
import org.spongepowered.api.block.entity.Lectern;
@@ -99,6 +100,7 @@
import org.spongepowered.api.data.value.MapValue;
import org.spongepowered.api.data.value.SetValue;
import org.spongepowered.api.data.value.Value;
+import org.spongepowered.api.data.value.ValueContainer;
import org.spongepowered.api.data.value.WeightedCollectionValue;
import org.spongepowered.api.effect.VanishState;
import org.spongepowered.api.effect.particle.ParticleEffect;
@@ -163,6 +165,7 @@
import org.spongepowered.api.entity.living.golem.IronGolem;
import org.spongepowered.api.entity.living.golem.Shulker;
import org.spongepowered.api.entity.living.monster.Blaze;
+import org.spongepowered.api.entity.living.monster.Creaking;
import org.spongepowered.api.entity.living.monster.Creeper;
import org.spongepowered.api.entity.living.monster.Enderman;
import org.spongepowered.api.entity.living.monster.Endermite;
@@ -183,6 +186,7 @@
import org.spongepowered.api.entity.living.monster.spider.Spider;
import org.spongepowered.api.entity.living.monster.zombie.ZombieVillager;
import org.spongepowered.api.entity.living.monster.zombie.ZombifiedPiglin;
+import org.spongepowered.api.entity.living.player.CooldownTracker;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.entity.living.player.User;
import org.spongepowered.api.entity.living.player.chat.ChatVisibility;
@@ -208,6 +212,7 @@
import org.spongepowered.api.entity.vehicle.minecart.Minecart;
import org.spongepowered.api.entity.vehicle.minecart.MinecartLike;
import org.spongepowered.api.entity.weather.LightningBolt;
+import org.spongepowered.api.event.cause.entity.damage.source.DamageSource;
import org.spongepowered.api.event.cause.entity.damage.source.DamageSources;
import org.spongepowered.api.fluid.FluidStackSnapshot;
import org.spongepowered.api.fluid.FluidTypes;
@@ -220,6 +225,7 @@
import org.spongepowered.api.item.enchantment.EnchantmentTypes;
import org.spongepowered.api.item.inventory.Inventory;
import org.spongepowered.api.item.inventory.ItemStack;
+import org.spongepowered.api.item.inventory.ItemStackLike;
import org.spongepowered.api.item.inventory.ItemStackSnapshot;
import org.spongepowered.api.item.inventory.Slot;
import org.spongepowered.api.item.inventory.equipment.EquipmentType;
@@ -236,6 +242,7 @@
import org.spongepowered.api.projectile.source.ProjectileSource;
import org.spongepowered.api.raid.Raid;
import org.spongepowered.api.raid.RaidWave;
+import org.spongepowered.api.registry.DefaultedRegistryType;
import org.spongepowered.api.statistic.Statistic;
import org.spongepowered.api.tag.Tag;
import org.spongepowered.api.util.Axis;
@@ -265,7 +272,6 @@
import org.spongepowered.api.world.explosion.Explosion;
import org.spongepowered.api.world.generation.ChunkGenerator;
import org.spongepowered.api.world.generation.carver.Carver;
-import org.spongepowered.api.world.generation.carver.CarvingStep;
import org.spongepowered.api.world.generation.config.WorldGenerationConfig;
import org.spongepowered.api.world.generation.feature.DecorationStep;
import org.spongepowered.api.world.generation.feature.PlacedFeature;
@@ -656,7 +662,7 @@ public final class Keys {
* The carvers of a {@link Biome} used during world generation.
* Readonly
*/
- public static final Key>> CARVERS = Keys.mapKey(ResourceKey.sponge("carvers"), TypeToken.get(CarvingStep.class), new TypeToken>() {});
+ public static final Key> CARVERS = Keys.listKey(ResourceKey.sponge("carvers"), Carver.class);
/**
* The current casting time of a {@link Spellcaster}.
@@ -750,9 +756,24 @@ public final class Keys {
* The amount of ticks a {@link EndGateway} has to wait for the next teleportation.
* or
* The amount of ticks a {@link Crafter} has to wait for the next craft.
+ * or
+ * The amount of ticks an {@link ItemStack} has to wait before being used again, primarily in conjunction
+ * with {@link #COOLDOWN_GROUP} in a joined {@link ValueContainer} to be offered as a custom cooldown. Using
+ * a {@link DataManipulator#mutableOf( Iterable)} to set this value using {@link Value#mutableOf( Key, Object)}
+ * to join together a group is ideal.
*/
public static final Key> COOLDOWN = Keys.key(ResourceKey.sponge("cooldown"), Ticks.class);
+ /**
+ * The {@link ResourceKey group} of an {@link ItemStackLike ItemStack} that would apply a
+ * cooldown to the item when used. Note that this affects the {@link CooldownTracker} when
+ * a {@link Player} uses the item. Can be used in tandem with the {@link #COOLDOWN} key
+ * to apply a cooldown to said group. A group will differentiate a cooldown from the default
+ * {@link ItemStackLike ItemStack} cooldown based on the
+ * {@link ItemType#key(DefaultedRegistryType) ResourceKey}.
+ */
+ public static final Key> COOLDOWN_GROUP = Keys.key(ResourceKey.sponge("cooldown_group"), ResourceKey.class);
+
/**
* The coordinate scale of a {@link WorldType} applied to the coordinates of a {@link ServerPlayer player}
* when traveling in between {@link ServerWorld worlds}.
@@ -764,6 +785,22 @@ public final class Keys {
*/
public static final Key> COORDINATE_MULTIPLIER = Keys.key(ResourceKey.sponge("coordinate_multiplier"), Double.class);
+ /**
+ * The coordinates of where a {@link Creaking} has
+ * it's bonded {@link CreakingHeart home} set to. Can be
+ * overridden.
+ *
+ * When a {@link Creaking} is spawned, it can
+ * be considered linked to a heart or not.
+ */
+ public static final Key> CREAKING_HOME_POSITION = Keys.key(ResourceKey.sponge("creaking_home_position"), Vector3i.class);
+
+ /**
+ * Marks whether a {@link Creaking} is considered transient. When transient, it may be
+ * invulnerable to most all {@link DamageSource}s. Note that this is not mutable.
+ */
+ public static final Key> CREAKING_IS_LINKED = Keys.key(ResourceKey.sponge("creaking_transient"), Boolean.class);
+
/**
* Overrides whether a {@link WorldType} allows the {@link EnderDragon dragon} fight mechanic to spawn.
* By default, the dragon only spawns in the {@link DefaultWorldKeys#THE_END} world with {@link WorldTypes#THE_END} world type.
@@ -1021,7 +1058,7 @@ public final class Keys {
* determined randomly at the time of the explosion or computed from the
* context in which the {@link Explosive} explodes.
*/
- public static final Key> EXPLOSION_RADIUS = Keys.key(ResourceKey.sponge("explosion_radius"), Integer.class);
+ public static final Key> EXPLOSION_RADIUS = Keys.key(ResourceKey.sponge("explosion_radius"), Float.class);
/**
* The eye height of an {@link Entity}.
diff --git a/src/main/java/org/spongepowered/api/data/type/ArmorMaterial.java b/src/main/java/org/spongepowered/api/data/type/ArmorMaterial.java
index cdcc6cfa1a..c59de8bfcc 100644
--- a/src/main/java/org/spongepowered/api/data/type/ArmorMaterial.java
+++ b/src/main/java/org/spongepowered/api/data/type/ArmorMaterial.java
@@ -26,11 +26,11 @@
import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.item.ItemTypes;
-import org.spongepowered.api.item.recipe.crafting.Ingredient;
+import org.spongepowered.api.item.inventory.ItemStack;
import org.spongepowered.api.registry.DefaultedRegistryValue;
import org.spongepowered.api.util.annotation.CatalogedBy;
-import java.util.Optional;
+import java.util.function.Predicate;
/**
* Represents a type of "armor", usually applicable to any
@@ -40,11 +40,10 @@
public interface ArmorMaterial extends DefaultedRegistryValue {
/**
- * Gets the {@link ItemType} that can be used to
- * "repair" the armor type.
+ * Gets the {@link ItemType} that can be used to "repair" the armor type.
*
* @return The item type considered to be used for repairing
*/
- Optional repairIngredient();
+ Predicate repairIngredient();
}
diff --git a/src/main/java/org/spongepowered/api/data/type/BoatType.java b/src/main/java/org/spongepowered/api/data/type/BoatType.java
index bece42a412..4ad6140ffa 100644
--- a/src/main/java/org/spongepowered/api/data/type/BoatType.java
+++ b/src/main/java/org/spongepowered/api/data/type/BoatType.java
@@ -24,12 +24,10 @@
*/
package org.spongepowered.api.data.type;
-import org.spongepowered.api.block.BlockType;
import org.spongepowered.api.registry.DefaultedRegistryValue;
import org.spongepowered.api.util.annotation.CatalogedBy;
@CatalogedBy(BoatTypes.class)
public interface BoatType extends DefaultedRegistryValue {
- BlockType representedBlock();
}
diff --git a/src/main/java/org/spongepowered/api/data/type/CreakingHeart.java b/src/main/java/org/spongepowered/api/data/type/CreakingHeart.java
new file mode 100644
index 0000000000..2bd3daa8f2
--- /dev/null
+++ b/src/main/java/org/spongepowered/api/data/type/CreakingHeart.java
@@ -0,0 +1,35 @@
+/*
+ * This file is part of SpongeAPI, licensed under the MIT License (MIT).
+ *
+ * Copyright (c) SpongePowered
+ * Copyright (c) contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package org.spongepowered.api.data.type;
+
+import org.spongepowered.api.registry.DefaultedRegistryValue;
+import org.spongepowered.api.registry.RegistryScope;
+import org.spongepowered.api.registry.RegistryScopes;
+import org.spongepowered.api.util.annotation.CatalogedBy;
+
+@RegistryScopes(scopes = RegistryScope.GAME)
+@CatalogedBy(CreakingHearts.class)
+public interface CreakingHeart extends Comparable, StringRepresentable, DefaultedRegistryValue {
+}
diff --git a/src/main/java/org/spongepowered/api/world/generation/carver/CarvingSteps.java b/src/main/java/org/spongepowered/api/data/type/CreakingHearts.java
similarity index 61%
rename from src/main/java/org/spongepowered/api/world/generation/carver/CarvingSteps.java
rename to src/main/java/org/spongepowered/api/data/type/CreakingHearts.java
index e2707fe9d2..88eeb4cc33 100644
--- a/src/main/java/org/spongepowered/api/world/generation/carver/CarvingSteps.java
+++ b/src/main/java/org/spongepowered/api/data/type/CreakingHearts.java
@@ -22,36 +22,23 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-package org.spongepowered.api.world.generation.carver;
+package org.spongepowered.api.data.type;
import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.registry.DefaultedRegistryReference;
-import org.spongepowered.api.registry.Registry;
import org.spongepowered.api.registry.RegistryKey;
-import org.spongepowered.api.registry.RegistryScope;
-import org.spongepowered.api.registry.RegistryScopes;
import org.spongepowered.api.registry.RegistryTypes;
-@SuppressWarnings("unused")
-@RegistryScopes(scopes = RegistryScope.GAME)
-public final class CarvingSteps {
- // @formatter:off
+public final class CreakingHearts {
- public static final DefaultedRegistryReference AIR = CarvingSteps.key(ResourceKey.sponge("air"));
+ public static final DefaultedRegistryReference ACTIVE = CreakingHearts.key(ResourceKey.sponge("active"));
- public static final DefaultedRegistryReference LIQUID = CarvingSteps.key(ResourceKey.sponge("liquid"));
+ public static final DefaultedRegistryReference DISABLED = CreakingHearts.key(ResourceKey.sponge("disabled"));
- // @formatter:on
+ public static final DefaultedRegistryReference DORMANT = CreakingHearts.key(ResourceKey.sponge("dormant"));
- private CarvingSteps() {
- }
-
- public static Registry registry() {
- return Sponge.game().registry(RegistryTypes.CARVING_STEP);
- }
-
- private static DefaultedRegistryReference key(final ResourceKey location) {
- return RegistryKey.of(RegistryTypes.CARVING_STEP, location).asDefaultedReference(Sponge::game);
+ private static DefaultedRegistryReference key(final ResourceKey location) {
+ return RegistryKey.of(RegistryTypes.CREAKING_HEART, location).asDefaultedReference(Sponge::game);
}
}
diff --git a/src/main/java/org/spongepowered/api/effect/particle/ParticleTypes.java b/src/main/java/org/spongepowered/api/effect/particle/ParticleTypes.java
index 06fa3d1930..524ea27a09 100644
--- a/src/main/java/org/spongepowered/api/effect/particle/ParticleTypes.java
+++ b/src/main/java/org/spongepowered/api/effect/particle/ParticleTypes.java
@@ -46,6 +46,8 @@ public final class ParticleTypes {
public static final DefaultedRegistryReference BLOCK = ParticleTypes.key(ResourceKey.minecraft("block"));
+ public static final DefaultedRegistryReference BLOCK_CRUMBLE = ParticleTypes.key(ResourceKey.minecraft("block_crumble"));
+
public static final DefaultedRegistryReference BLOCK_MARKER = ParticleTypes.key(ResourceKey.minecraft("block_marker"));
public static final DefaultedRegistryReference BUBBLE = ParticleTypes.key(ResourceKey.minecraft("bubble"));
@@ -234,6 +236,8 @@ public final class ParticleTypes {
public static final DefaultedRegistryReference TOTEM_OF_UNDYING = ParticleTypes.key(ResourceKey.minecraft("totem_of_undying"));
+ public static final DefaultedRegistryReference TRAIL = ParticleTypes.key(ResourceKey.minecraft("trail"));
+
public static final DefaultedRegistryReference TRIAL_OMEN = ParticleTypes.key(ResourceKey.minecraft("trial_omen"));
public static final DefaultedRegistryReference TRIAL_SPAWNER_DETECTION = ParticleTypes.key(ResourceKey.minecraft("trial_spawner_detection"));
diff --git a/src/main/java/org/spongepowered/api/effect/sound/SoundTypes.java b/src/main/java/org/spongepowered/api/effect/sound/SoundTypes.java
index b9576c0054..e25a68d898 100644
--- a/src/main/java/org/spongepowered/api/effect/sound/SoundTypes.java
+++ b/src/main/java/org/spongepowered/api/effect/sound/SoundTypes.java
@@ -508,6 +508,22 @@ public final class SoundTypes {
public static final DefaultedRegistryReference BLOCK_CRAFTER_FAIL = SoundTypes.key(ResourceKey.minecraft("block.crafter.fail"));
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_BREAK = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.break"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_FALL = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.fall"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_HIT = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.hit"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_HURT = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.hurt"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_IDLE = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.idle"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_PLACE = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.place"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_SPAWN = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.spawn"));
+
+ public static final DefaultedRegistryReference BLOCK_CREAKING_HEART_STEP = SoundTypes.key(ResourceKey.minecraft("block.creaking_heart.step"));
+
public static final DefaultedRegistryReference BLOCK_CROP_BREAK = SoundTypes.key(ResourceKey.minecraft("block.crop.break"));
public static final DefaultedRegistryReference BLOCK_DECORATED_POT_BREAK = SoundTypes.key(ResourceKey.minecraft("block.decorated_pot.break"));
@@ -1020,6 +1036,8 @@ public final class SoundTypes {
public static final DefaultedRegistryReference BLOCK_PACKED_MUD_STEP = SoundTypes.key(ResourceKey.minecraft("block.packed_mud.step"));
+ public static final DefaultedRegistryReference BLOCK_PALE_HANGING_MOSS_IDLE = SoundTypes.key(ResourceKey.minecraft("block.pale_hanging_moss.idle"));
+
public static final DefaultedRegistryReference BLOCK_PINK_PETALS_BREAK = SoundTypes.key(ResourceKey.minecraft("block.pink_petals.break"));
public static final DefaultedRegistryReference BLOCK_PINK_PETALS_FALL = SoundTypes.key(ResourceKey.minecraft("block.pink_petals.fall"));
@@ -1284,6 +1302,16 @@ public final class SoundTypes {
public static final DefaultedRegistryReference BLOCK_SOUL_SOIL_STEP = SoundTypes.key(ResourceKey.minecraft("block.soul_soil.step"));
+ public static final DefaultedRegistryReference BLOCK_SPAWNER_BREAK = SoundTypes.key(ResourceKey.minecraft("block.spawner.break"));
+
+ public static final DefaultedRegistryReference BLOCK_SPAWNER_FALL = SoundTypes.key(ResourceKey.minecraft("block.spawner.fall"));
+
+ public static final DefaultedRegistryReference BLOCK_SPAWNER_HIT = SoundTypes.key(ResourceKey.minecraft("block.spawner.hit"));
+
+ public static final DefaultedRegistryReference BLOCK_SPAWNER_PLACE = SoundTypes.key(ResourceKey.minecraft("block.spawner.place"));
+
+ public static final DefaultedRegistryReference BLOCK_SPAWNER_STEP = SoundTypes.key(ResourceKey.minecraft("block.spawner.step"));
+
public static final DefaultedRegistryReference BLOCK_SPONGE_ABSORB = SoundTypes.key(ResourceKey.minecraft("block.sponge.absorb"));
public static final DefaultedRegistryReference BLOCK_SPONGE_BREAK = SoundTypes.key(ResourceKey.minecraft("block.sponge.break"));
@@ -1748,6 +1776,26 @@ public final class SoundTypes {
public static final DefaultedRegistryReference ENTITY_COW_STEP = SoundTypes.key(ResourceKey.minecraft("entity.cow.step"));
+ public static final DefaultedRegistryReference ENTITY_CREAKING_ACTIVATE = SoundTypes.key(ResourceKey.minecraft("entity.creaking.activate"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_AMBIENT = SoundTypes.key(ResourceKey.minecraft("entity.creaking.ambient"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_ATTACK = SoundTypes.key(ResourceKey.minecraft("entity.creaking.attack"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_DEACTIVATE = SoundTypes.key(ResourceKey.minecraft("entity.creaking.deactivate"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_DEATH = SoundTypes.key(ResourceKey.minecraft("entity.creaking.death"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_FREEZE = SoundTypes.key(ResourceKey.minecraft("entity.creaking.freeze"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_SPAWN = SoundTypes.key(ResourceKey.minecraft("entity.creaking.spawn"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_STEP = SoundTypes.key(ResourceKey.minecraft("entity.creaking.step"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_SWAY = SoundTypes.key(ResourceKey.minecraft("entity.creaking.sway"));
+
+ public static final DefaultedRegistryReference ENTITY_CREAKING_UNFREEZE = SoundTypes.key(ResourceKey.minecraft("entity.creaking.unfreeze"));
+
public static final DefaultedRegistryReference ENTITY_CREEPER_DEATH = SoundTypes.key(ResourceKey.minecraft("entity.creeper.death"));
public static final DefaultedRegistryReference ENTITY_CREEPER_HURT = SoundTypes.key(ResourceKey.minecraft("entity.creeper.hurt"));
@@ -2024,8 +2072,6 @@ public final class SoundTypes {
public static final DefaultedRegistryReference ENTITY_GOAT_SCREAMING_EAT = SoundTypes.key(ResourceKey.minecraft("entity.goat.screaming.eat"));
- public static final DefaultedRegistryReference ENTITY_GOAT_SCREAMING_HORN_BREAK = SoundTypes.key(ResourceKey.minecraft("entity.goat.screaming.horn_break"));
-
public static final DefaultedRegistryReference ENTITY_GOAT_SCREAMING_HURT = SoundTypes.key(ResourceKey.minecraft("entity.goat.screaming.hurt"));
public static final DefaultedRegistryReference ENTITY_GOAT_SCREAMING_LONG_JUMP = SoundTypes.key(ResourceKey.minecraft("entity.goat.screaming.long_jump"));
@@ -2278,6 +2324,8 @@ public final class SoundTypes {
public static final DefaultedRegistryReference ENTITY_PARROT_IMITATE_BREEZE = SoundTypes.key(ResourceKey.minecraft("entity.parrot.imitate.breeze"));
+ public static final DefaultedRegistryReference ENTITY_PARROT_IMITATE_CREAKING = SoundTypes.key(ResourceKey.minecraft("entity.parrot.imitate.creaking"));
+
public static final DefaultedRegistryReference ENTITY_PARROT_IMITATE_CREEPER = SoundTypes.key(ResourceKey.minecraft("entity.parrot.imitate.creeper"));
public static final DefaultedRegistryReference ENTITY_PARROT_IMITATE_DROWNED = SoundTypes.key(ResourceKey.minecraft("entity.parrot.imitate.drowned"));
@@ -3032,6 +3080,8 @@ public final class SoundTypes {
public static final DefaultedRegistryReference ITEM_BUNDLE_INSERT = SoundTypes.key(ResourceKey.minecraft("item.bundle.insert"));
+ public static final DefaultedRegistryReference ITEM_BUNDLE_INSERT_FAIL = SoundTypes.key(ResourceKey.minecraft("item.bundle.insert_fail"));
+
public static final DefaultedRegistryReference ITEM_BUNDLE_REMOVE_ONE = SoundTypes.key(ResourceKey.minecraft("item.bundle.remove_one"));
public static final DefaultedRegistryReference ITEM_CHORUS_FRUIT_TELEPORT = SoundTypes.key(ResourceKey.minecraft("item.chorus_fruit.teleport"));
@@ -3064,8 +3114,6 @@ public final class SoundTypes {
public static final DefaultedRegistryReference ITEM_GLOW_INK_SAC_USE = SoundTypes.key(ResourceKey.minecraft("item.glow_ink_sac.use"));
- public static final DefaultedRegistryReference ITEM_GOAT_HORN_PLAY = SoundTypes.key(ResourceKey.minecraft("item.goat_horn.play"));
-
public static final DefaultedRegistryReference ITEM_GOAT_HORN_SOUND_0 = SoundTypes.key(ResourceKey.minecraft("item.goat_horn.sound.0"));
public static final DefaultedRegistryReference ITEM_GOAT_HORN_SOUND_1 = SoundTypes.key(ResourceKey.minecraft("item.goat_horn.sound.1"));
@@ -3244,6 +3292,8 @@ public final class SoundTypes {
public static final DefaultedRegistryReference UI_CARTOGRAPHY_TABLE_TAKE_RESULT = SoundTypes.key(ResourceKey.minecraft("ui.cartography_table.take_result"));
+ public static final DefaultedRegistryReference UI_HUD_BUBBLE_POP = SoundTypes.key(ResourceKey.minecraft("ui.hud.bubble_pop"));
+
public static final DefaultedRegistryReference UI_LOOM_SELECT_PATTERN = SoundTypes.key(ResourceKey.minecraft("ui.loom.select_pattern"));
public static final DefaultedRegistryReference UI_LOOM_TAKE_RESULT = SoundTypes.key(ResourceKey.minecraft("ui.loom.take_result"));
diff --git a/src/main/java/org/spongepowered/api/entity/Entity.java b/src/main/java/org/spongepowered/api/entity/Entity.java
index 2f39680f34..10f3250a41 100644
--- a/src/main/java/org/spongepowered/api/entity/Entity.java
+++ b/src/main/java/org/spongepowered/api/entity/Entity.java
@@ -292,6 +292,10 @@ default boolean damage(final double damage, final Supplier extends DamageSourc
*/
boolean damage(double damage, DamageSource damageSource);
+ default void foo() {
+
+ }
+
/**
* Gets the nearby entities within the desired distance.
*
diff --git a/src/main/java/org/spongepowered/api/entity/EntityTypes.java b/src/main/java/org/spongepowered/api/entity/EntityTypes.java
index 64863cb3de..ed4c5a7c81 100644
--- a/src/main/java/org/spongepowered/api/entity/EntityTypes.java
+++ b/src/main/java/org/spongepowered/api/entity/EntityTypes.java
@@ -81,6 +81,7 @@
import org.spongepowered.api.entity.living.golem.Shulker;
import org.spongepowered.api.entity.living.golem.SnowGolem;
import org.spongepowered.api.entity.living.monster.Blaze;
+import org.spongepowered.api.entity.living.monster.Creaking;
import org.spongepowered.api.entity.living.monster.Creeper;
import org.spongepowered.api.entity.living.monster.Enderman;
import org.spongepowered.api.entity.living.monster.Endermite;
@@ -142,6 +143,7 @@
import org.spongepowered.api.entity.projectile.windcharge.WindCharge;
import org.spongepowered.api.entity.vehicle.Boat;
import org.spongepowered.api.entity.vehicle.ChestBoat;
+import org.spongepowered.api.entity.vehicle.Raft;
import org.spongepowered.api.entity.vehicle.minecart.CommandBlockMinecart;
import org.spongepowered.api.entity.vehicle.minecart.FurnaceMinecart;
import org.spongepowered.api.entity.vehicle.minecart.Minecart;
@@ -164,6 +166,10 @@
@RegistryScopes(scopes = RegistryScope.GAME)
public final class EntityTypes {
+ public static final DefaultedRegistryReference> ACACIA_BOAT = EntityTypes.key(ResourceKey.minecraft("acacia_boat"));
+
+ public static final DefaultedRegistryReference> ACACIA_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("acacia_chest_boat"));
+
public static final DefaultedRegistryReference> ALLAY = EntityTypes.key(ResourceKey.minecraft("allay"));
public static final DefaultedRegistryReference> AREA_EFFECT_CLOUD = EntityTypes.key(ResourceKey.minecraft("area_effect_cloud"));
@@ -176,16 +182,22 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> AXOLOTL = EntityTypes.key(ResourceKey.minecraft("axolotl"));
+ public static final DefaultedRegistryReference> BAMBOO_CHEST_RAFT = EntityTypes.key(ResourceKey.minecraft("bamboo_chest_raft"));
+
+ public static final DefaultedRegistryReference> BAMBOO_RAFT = EntityTypes.key(ResourceKey.minecraft("bamboo_raft"));
+
public static final DefaultedRegistryReference> BAT = EntityTypes.key(ResourceKey.minecraft("bat"));
public static final DefaultedRegistryReference> BEE = EntityTypes.key(ResourceKey.minecraft("bee"));
+ public static final DefaultedRegistryReference> BIRCH_BOAT = EntityTypes.key(ResourceKey.minecraft("birch_boat"));
+
+ public static final DefaultedRegistryReference> BIRCH_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("birch_chest_boat"));
+
public static final DefaultedRegistryReference> BLAZE = EntityTypes.key(ResourceKey.minecraft("blaze"));
public static final DefaultedRegistryReference> BLOCK_DISPLAY = EntityTypes.key(ResourceKey.minecraft("block_display"));
- public static final DefaultedRegistryReference> BOAT = EntityTypes.key(ResourceKey.minecraft("boat"));
-
public static final DefaultedRegistryReference> BOGGED = EntityTypes.key(ResourceKey.minecraft("bogged"));
public static final DefaultedRegistryReference> BREEZE = EntityTypes.key(ResourceKey.minecraft("breeze"));
@@ -198,7 +210,9 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> CAVE_SPIDER = EntityTypes.key(ResourceKey.minecraft("cave_spider"));
- public static final DefaultedRegistryReference> CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("chest_boat"));
+ public static final DefaultedRegistryReference> CHERRY_BOAT = EntityTypes.key(ResourceKey.minecraft("cherry_boat"));
+
+ public static final DefaultedRegistryReference> CHERRY_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("cherry_chest_boat"));
public static final DefaultedRegistryReference> CHEST_MINECART = EntityTypes.key(ResourceKey.minecraft("chest_minecart"));
@@ -210,8 +224,16 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> COW = EntityTypes.key(ResourceKey.minecraft("cow"));
+ public static final DefaultedRegistryReference> CREAKING = EntityTypes.key(ResourceKey.minecraft("creaking"));
+
+ public static final DefaultedRegistryReference> CREAKING_TRANSIENT = EntityTypes.key(ResourceKey.minecraft("creaking_transient"));
+
public static final DefaultedRegistryReference> CREEPER = EntityTypes.key(ResourceKey.minecraft("creeper"));
+ public static final DefaultedRegistryReference> DARK_OAK_BOAT = EntityTypes.key(ResourceKey.minecraft("dark_oak_boat"));
+
+ public static final DefaultedRegistryReference> DARK_OAK_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("dark_oak_chest_boat"));
+
public static final DefaultedRegistryReference> DOLPHIN = EntityTypes.key(ResourceKey.minecraft("dolphin"));
public static final DefaultedRegistryReference> DONKEY = EntityTypes.key(ResourceKey.minecraft("donkey"));
@@ -292,6 +314,10 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> ITEM_FRAME = EntityTypes.key(ResourceKey.minecraft("item_frame"));
+ public static final DefaultedRegistryReference> JUNGLE_BOAT = EntityTypes.key(ResourceKey.minecraft("jungle_boat"));
+
+ public static final DefaultedRegistryReference> JUNGLE_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("jungle_chest_boat"));
+
public static final DefaultedRegistryReference> LEASH_KNOT = EntityTypes.key(ResourceKey.minecraft("leash_knot"));
public static final DefaultedRegistryReference> LIGHTNING_BOLT = EntityTypes.key(ResourceKey.minecraft("lightning_bolt"));
@@ -302,6 +328,10 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> MAGMA_CUBE = EntityTypes.key(ResourceKey.minecraft("magma_cube"));
+ public static final DefaultedRegistryReference> MANGROVE_BOAT = EntityTypes.key(ResourceKey.minecraft("mangrove_boat"));
+
+ public static final DefaultedRegistryReference> MANGROVE_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("mangrove_chest_boat"));
+
public static final DefaultedRegistryReference> MARKER = EntityTypes.key(ResourceKey.minecraft("marker"));
public static final DefaultedRegistryReference> MINECART = EntityTypes.key(ResourceKey.minecraft("minecart"));
@@ -310,12 +340,20 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> MULE = EntityTypes.key(ResourceKey.minecraft("mule"));
+ public static final DefaultedRegistryReference> OAK_BOAT = EntityTypes.key(ResourceKey.minecraft("oak_boat"));
+
+ public static final DefaultedRegistryReference> OAK_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("oak_chest_boat"));
+
public static final DefaultedRegistryReference> OCELOT = EntityTypes.key(ResourceKey.minecraft("ocelot"));
public static final DefaultedRegistryReference> OMINOUS_ITEM_SPAWNER = EntityTypes.key(ResourceKey.minecraft("ominous_item_spawner"));
public static final DefaultedRegistryReference> PAINTING = EntityTypes.key(ResourceKey.minecraft("painting"));
+ public static final DefaultedRegistryReference> PALE_OAK_BOAT = EntityTypes.key(ResourceKey.minecraft("pale_oak_boat"));
+
+ public static final DefaultedRegistryReference> PALE_OAK_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("pale_oak_chest_boat"));
+
public static final DefaultedRegistryReference> PANDA = EntityTypes.key(ResourceKey.minecraft("panda"));
public static final DefaultedRegistryReference> PARROT = EntityTypes.key(ResourceKey.minecraft("parrot"));
@@ -372,6 +410,10 @@ public final class EntityTypes {
public static final DefaultedRegistryReference> SPIDER = EntityTypes.key(ResourceKey.minecraft("spider"));
+ public static final DefaultedRegistryReference> SPRUCE_BOAT = EntityTypes.key(ResourceKey.minecraft("spruce_boat"));
+
+ public static final DefaultedRegistryReference> SPRUCE_CHEST_BOAT = EntityTypes.key(ResourceKey.minecraft("spruce_chest_boat"));
+
public static final DefaultedRegistryReference> SQUID = EntityTypes.key(ResourceKey.minecraft("squid"));
public static final DefaultedRegistryReference> STRAY = EntityTypes.key(ResourceKey.minecraft("stray"));
diff --git a/src/main/java/org/spongepowered/api/entity/ai/goal/builtin/creature/AvoidLivingGoal.java b/src/main/java/org/spongepowered/api/entity/ai/goal/builtin/creature/AvoidLivingGoal.java
index fee7413384..d3ed6ace73 100644
--- a/src/main/java/org/spongepowered/api/entity/ai/goal/builtin/creature/AvoidLivingGoal.java
+++ b/src/main/java/org/spongepowered/api/entity/ai/goal/builtin/creature/AvoidLivingGoal.java
@@ -30,7 +30,9 @@
import org.spongepowered.api.entity.living.Agent;
import org.spongepowered.api.entity.living.Living;
import org.spongepowered.api.entity.living.PathfinderAgent;
+import org.spongepowered.api.world.server.ServerWorld;
+import java.util.function.BiPredicate;
import java.util.function.Predicate;
public interface AvoidLivingGoal extends Goal {
@@ -52,7 +54,7 @@ static Builder builder() {
*
* @return The predicate used to filter which entities to avoid
*/
- Predicate targetSelector();
+ BiPredicate targetSelector();
/**
* Sets the {@link Predicate} for filtering which {@link Living} instances
@@ -61,7 +63,11 @@ static Builder builder() {
* @param predicate The predicate
* @return This task, for chaining
*/
- AvoidLivingGoal setTargetSelector(Predicate predicate);
+ default AvoidLivingGoal setTargetSelector(Predicate predicate) {
+ return this.setTargetSelector((entity, world) -> predicate.test(entity));
+ }
+
+ AvoidLivingGoal setTargetSelector(BiPredicate predicate);
/**
* Gets the search distance at which any {@link Living} instances in a
diff --git a/src/main/java/org/spongepowered/api/entity/attribute/type/AttributeTypes.java b/src/main/java/org/spongepowered/api/entity/attribute/type/AttributeTypes.java
index 328602a464..182ac2f1ec 100644
--- a/src/main/java/org/spongepowered/api/entity/attribute/type/AttributeTypes.java
+++ b/src/main/java/org/spongepowered/api/entity/attribute/type/AttributeTypes.java
@@ -40,67 +40,69 @@
@RegistryScopes(scopes = RegistryScope.GAME)
public final class AttributeTypes {
- public static final DefaultedRegistryReference GENERIC_ARMOR = AttributeTypes.key(ResourceKey.minecraft("generic.armor"));
+ public static final DefaultedRegistryReference ARMOR = AttributeTypes.key(ResourceKey.minecraft("armor"));
- public static final DefaultedRegistryReference GENERIC_ARMOR_TOUGHNESS = AttributeTypes.key(ResourceKey.minecraft("generic.armor_toughness"));
+ public static final DefaultedRegistryReference ARMOR_TOUGHNESS = AttributeTypes.key(ResourceKey.minecraft("armor_toughness"));
- public static final DefaultedRegistryReference GENERIC_ATTACK_DAMAGE = AttributeTypes.key(ResourceKey.minecraft("generic.attack_damage"));
+ public static final DefaultedRegistryReference ATTACK_DAMAGE = AttributeTypes.key(ResourceKey.minecraft("attack_damage"));
- public static final DefaultedRegistryReference GENERIC_ATTACK_KNOCKBACK = AttributeTypes.key(ResourceKey.minecraft("generic.attack_knockback"));
+ public static final DefaultedRegistryReference ATTACK_KNOCKBACK = AttributeTypes.key(ResourceKey.minecraft("attack_knockback"));
- public static final DefaultedRegistryReference GENERIC_ATTACK_SPEED = AttributeTypes.key(ResourceKey.minecraft("generic.attack_speed"));
+ public static final DefaultedRegistryReference ATTACK_SPEED = AttributeTypes.key(ResourceKey.minecraft("attack_speed"));
- public static final DefaultedRegistryReference GENERIC_BURNING_TIME = AttributeTypes.key(ResourceKey.minecraft("generic.burning_time"));
+ public static final DefaultedRegistryReference BLOCK_BREAK_SPEED = AttributeTypes.key(ResourceKey.minecraft("block_break_speed"));
- public static final DefaultedRegistryReference GENERIC_EXPLOSION_KNOCKBACK_RESISTANCE = AttributeTypes.key(ResourceKey.minecraft("generic.explosion_knockback_resistance"));
+ public static final DefaultedRegistryReference BLOCK_INTERACTION_RANGE = AttributeTypes.key(ResourceKey.minecraft("block_interaction_range"));
- public static final DefaultedRegistryReference GENERIC_FALL_DAMAGE_MULTIPLIER = AttributeTypes.key(ResourceKey.minecraft("generic.fall_damage_multiplier"));
+ public static final DefaultedRegistryReference BURNING_TIME = AttributeTypes.key(ResourceKey.minecraft("burning_time"));
- public static final DefaultedRegistryReference GENERIC_FLYING_SPEED = AttributeTypes.key(ResourceKey.minecraft("generic.flying_speed"));
+ public static final DefaultedRegistryReference ENTITY_INTERACTION_RANGE = AttributeTypes.key(ResourceKey.minecraft("entity_interaction_range"));
- public static final DefaultedRegistryReference GENERIC_FOLLOW_RANGE = AttributeTypes.key(ResourceKey.minecraft("generic.follow_range"));
+ public static final DefaultedRegistryReference EXPLOSION_KNOCKBACK_RESISTANCE = AttributeTypes.key(ResourceKey.minecraft("explosion_knockback_resistance"));
- public static final DefaultedRegistryReference GENERIC_GRAVITY = AttributeTypes.key(ResourceKey.minecraft("generic.gravity"));
+ public static final DefaultedRegistryReference FALL_DAMAGE_MULTIPLIER = AttributeTypes.key(ResourceKey.minecraft("fall_damage_multiplier"));
- public static final DefaultedRegistryReference GENERIC_JUMP_STRENGTH = AttributeTypes.key(ResourceKey.minecraft("generic.jump_strength"));
+ public static final DefaultedRegistryReference FLYING_SPEED = AttributeTypes.key(ResourceKey.minecraft("flying_speed"));
- public static final DefaultedRegistryReference GENERIC_KNOCKBACK_RESISTANCE = AttributeTypes.key(ResourceKey.minecraft("generic.knockback_resistance"));
+ public static final DefaultedRegistryReference FOLLOW_RANGE = AttributeTypes.key(ResourceKey.minecraft("follow_range"));
- public static final DefaultedRegistryReference GENERIC_LUCK = AttributeTypes.key(ResourceKey.minecraft("generic.luck"));
+ public static final DefaultedRegistryReference GRAVITY = AttributeTypes.key(ResourceKey.minecraft("gravity"));
- public static final DefaultedRegistryReference GENERIC_MAX_ABSORPTION = AttributeTypes.key(ResourceKey.minecraft("generic.max_absorption"));
+ public static final DefaultedRegistryReference JUMP_STRENGTH = AttributeTypes.key(ResourceKey.minecraft("jump_strength"));
- public static final DefaultedRegistryReference GENERIC_MAX_HEALTH = AttributeTypes.key(ResourceKey.minecraft("generic.max_health"));
+ public static final DefaultedRegistryReference KNOCKBACK_RESISTANCE = AttributeTypes.key(ResourceKey.minecraft("knockback_resistance"));
- public static final DefaultedRegistryReference GENERIC_MOVEMENT_EFFICIENCY = AttributeTypes.key(ResourceKey.minecraft("generic.movement_efficiency"));
+ public static final DefaultedRegistryReference LUCK = AttributeTypes.key(ResourceKey.minecraft("luck"));
- public static final DefaultedRegistryReference GENERIC_MOVEMENT_SPEED = AttributeTypes.key(ResourceKey.minecraft("generic.movement_speed"));
+ public static final DefaultedRegistryReference MAX_ABSORPTION = AttributeTypes.key(ResourceKey.minecraft("max_absorption"));
- public static final DefaultedRegistryReference GENERIC_OXYGEN_BONUS = AttributeTypes.key(ResourceKey.minecraft("generic.oxygen_bonus"));
+ public static final DefaultedRegistryReference MAX_HEALTH = AttributeTypes.key(ResourceKey.minecraft("max_health"));
- public static final DefaultedRegistryReference GENERIC_SAFE_FALL_DISTANCE = AttributeTypes.key(ResourceKey.minecraft("generic.safe_fall_distance"));
+ public static final DefaultedRegistryReference MINING_EFFICIENCY = AttributeTypes.key(ResourceKey.minecraft("mining_efficiency"));
- public static final DefaultedRegistryReference GENERIC_SCALE = AttributeTypes.key(ResourceKey.minecraft("generic.scale"));
+ public static final DefaultedRegistryReference MOVEMENT_EFFICIENCY = AttributeTypes.key(ResourceKey.minecraft("movement_efficiency"));
- public static final DefaultedRegistryReference GENERIC_STEP_HEIGHT = AttributeTypes.key(ResourceKey.minecraft("generic.step_height"));
+ public static final DefaultedRegistryReference MOVEMENT_SPEED = AttributeTypes.key(ResourceKey.minecraft("movement_speed"));
- public static final DefaultedRegistryReference GENERIC_WATER_MOVEMENT_EFFICIENCY = AttributeTypes.key(ResourceKey.minecraft("generic.water_movement_efficiency"));
+ public static final DefaultedRegistryReference OXYGEN_BONUS = AttributeTypes.key(ResourceKey.minecraft("oxygen_bonus"));
- public static final DefaultedRegistryReference PLAYER_BLOCK_BREAK_SPEED = AttributeTypes.key(ResourceKey.minecraft("player.block_break_speed"));
+ public static final DefaultedRegistryReference SAFE_FALL_DISTANCE = AttributeTypes.key(ResourceKey.minecraft("safe_fall_distance"));
- public static final DefaultedRegistryReference PLAYER_BLOCK_INTERACTION_RANGE = AttributeTypes.key(ResourceKey.minecraft("player.block_interaction_range"));
+ public static final DefaultedRegistryReference SCALE = AttributeTypes.key(ResourceKey.minecraft("scale"));
- public static final DefaultedRegistryReference PLAYER_ENTITY_INTERACTION_RANGE = AttributeTypes.key(ResourceKey.minecraft("player.entity_interaction_range"));
+ public static final DefaultedRegistryReference SNEAKING_SPEED = AttributeTypes.key(ResourceKey.minecraft("sneaking_speed"));
- public static final DefaultedRegistryReference PLAYER_MINING_EFFICIENCY = AttributeTypes.key(ResourceKey.minecraft("player.mining_efficiency"));
+ public static final DefaultedRegistryReference SPAWN_REINFORCEMENTS = AttributeTypes.key(ResourceKey.minecraft("spawn_reinforcements"));
- public static final DefaultedRegistryReference PLAYER_SNEAKING_SPEED = AttributeTypes.key(ResourceKey.minecraft("player.sneaking_speed"));
+ public static final DefaultedRegistryReference STEP_HEIGHT = AttributeTypes.key(ResourceKey.minecraft("step_height"));
- public static final DefaultedRegistryReference PLAYER_SUBMERGED_MINING_SPEED = AttributeTypes.key(ResourceKey.minecraft("player.submerged_mining_speed"));
+ public static final DefaultedRegistryReference SUBMERGED_MINING_SPEED = AttributeTypes.key(ResourceKey.minecraft("submerged_mining_speed"));
- public static final DefaultedRegistryReference PLAYER_SWEEPING_DAMAGE_RATIO = AttributeTypes.key(ResourceKey.minecraft("player.sweeping_damage_ratio"));
+ public static final DefaultedRegistryReference SWEEPING_DAMAGE_RATIO = AttributeTypes.key(ResourceKey.minecraft("sweeping_damage_ratio"));
- public static final DefaultedRegistryReference ZOMBIE_SPAWN_REINFORCEMENTS = AttributeTypes.key(ResourceKey.minecraft("zombie.spawn_reinforcements"));
+ public static final DefaultedRegistryReference TEMPT_RANGE = AttributeTypes.key(ResourceKey.minecraft("tempt_range"));
+
+ public static final DefaultedRegistryReference WATER_MOVEMENT_EFFICIENCY = AttributeTypes.key(ResourceKey.minecraft("water_movement_efficiency"));
private AttributeTypes() {
}
diff --git a/src/main/java/org/spongepowered/api/entity/explosive/Explosive.java b/src/main/java/org/spongepowered/api/entity/explosive/Explosive.java
index ab0cff20ac..23e3a18a65 100644
--- a/src/main/java/org/spongepowered/api/entity/explosive/Explosive.java
+++ b/src/main/java/org/spongepowered/api/entity/explosive/Explosive.java
@@ -40,7 +40,7 @@ public interface Explosive extends Entity {
*
* @return The explosion radius
*/
- default Optional> explosionRadius() {
+ default Optional> explosionRadius() {
return this.getValue(Keys.EXPLOSION_RADIUS).map(Value::asMutable);
}
diff --git a/src/main/java/org/spongepowered/api/entity/living/aquatic/Dolphin.java b/src/main/java/org/spongepowered/api/entity/living/aquatic/Dolphin.java
index c0f7399565..4f63568e25 100644
--- a/src/main/java/org/spongepowered/api/entity/living/aquatic/Dolphin.java
+++ b/src/main/java/org/spongepowered/api/entity/living/aquatic/Dolphin.java
@@ -26,11 +26,12 @@
import org.spongepowered.api.data.Keys;
import org.spongepowered.api.data.value.Value;
+import org.spongepowered.api.entity.Ageable;
/**
* Represents a Dolphin
*/
-public interface Dolphin extends Aquatic {
+public interface Dolphin extends Aquatic, Ageable {
/**
* {@link Keys#SKIN_MOISTURE}
diff --git a/src/main/java/org/spongepowered/api/entity/living/aquatic/Squid.java b/src/main/java/org/spongepowered/api/entity/living/aquatic/Squid.java
index 3d85e1e914..39cc635e77 100644
--- a/src/main/java/org/spongepowered/api/entity/living/aquatic/Squid.java
+++ b/src/main/java/org/spongepowered/api/entity/living/aquatic/Squid.java
@@ -24,9 +24,11 @@
*/
package org.spongepowered.api.entity.living.aquatic;
+import org.spongepowered.api.entity.Ageable;
+
/**
* Represents a Squid.
*/
-public interface Squid extends Aquatic {
+public interface Squid extends Aquatic, Ageable {
}
diff --git a/src/main/java/org/spongepowered/api/entity/living/monster/Creaking.java b/src/main/java/org/spongepowered/api/entity/living/monster/Creaking.java
new file mode 100644
index 0000000000..59b7c798a3
--- /dev/null
+++ b/src/main/java/org/spongepowered/api/entity/living/monster/Creaking.java
@@ -0,0 +1,48 @@
+/*
+ * This file is part of SpongeAPI, licensed under the MIT License (MIT).
+ *
+ * Copyright (c) SpongePowered
+ * Copyright (c) contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package org.spongepowered.api.entity.living.monster;
+
+import org.spongepowered.api.data.Keys;
+import org.spongepowered.api.data.value.Value;
+import org.spongepowered.api.entity.living.Monster;
+import org.spongepowered.api.util.annotation.Experimental;
+import org.spongepowered.math.vector.Vector3i;
+
+import java.util.Optional;
+
+/**
+ * A Creaking is a type of monster that originates from the {@link org.spongepowered.api.world.biome.Biomes#PALE_GARDEN}
+ */
+@Experimental("winter_drop")
+public interface Creaking extends Monster {
+
+ default Optional> homePosition() {
+ return this.getValue(Keys.CREAKING_HOME_POSITION).map(Value::asMutable);
+ }
+
+ default Value.Immutable isLinked() {
+ return this.requireValue(Keys.CREAKING_IS_LINKED).asImmutable();
+ }
+}
diff --git a/src/main/java/org/spongepowered/api/entity/living/monster/zombie/Zombie.java b/src/main/java/org/spongepowered/api/entity/living/monster/zombie/Zombie.java
index 12a8bf17bd..17aaa51335 100644
--- a/src/main/java/org/spongepowered/api/entity/living/monster/zombie/Zombie.java
+++ b/src/main/java/org/spongepowered/api/entity/living/monster/zombie/Zombie.java
@@ -38,6 +38,7 @@ public interface Zombie extends Monster {
*
* @return Whether this zombie is an adult or not
*/
+ @Override
default Value.Mutable adult() {
return this.requireValue(Keys.IS_ADULT).asMutable();
}
diff --git a/src/main/java/org/spongepowered/api/entity/living/player/CooldownTracker.java b/src/main/java/org/spongepowered/api/entity/living/player/CooldownTracker.java
index 9a0c181506..d6e2448688 100644
--- a/src/main/java/org/spongepowered/api/entity/living/player/CooldownTracker.java
+++ b/src/main/java/org/spongepowered/api/entity/living/player/CooldownTracker.java
@@ -24,7 +24,9 @@
*/
package org.spongepowered.api.entity.living.player;
+import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.item.ItemType;
+import org.spongepowered.api.item.inventory.ItemStack;
import org.spongepowered.api.util.Ticks;
import java.util.Optional;
@@ -39,41 +41,56 @@ public interface CooldownTracker {
* Checks if the specified {@link ItemType} is currently on cooldown
* for the player.
*
- * @param type The item type to check is on cooldown
+ * @param stack The item type to check is on cooldown
* @return Whether or not the specified item type is cooldown
*/
- boolean hasCooldown(ItemType type);
+ boolean hasCooldown(ItemStack stack);
+
+ boolean hasCooldown(ResourceKey group);
/**
* Gets the cooldown of the specified {@link ItemType} in ticks for the
* player, or empty if the the item type is currently not on cooldown.
*
- * @param type The item type to get the cooldown for
+ * @param stack The item type to get the cooldown for
* @return The cooldown remaining for this item type in ticks, if not
* on cooldown
*/
- Optional cooldown(ItemType type);
+ Optional cooldown(ItemStack stack);
+
+ /**
+ * Gets the cooldown for the specified {@link ResourceKey group} in ticks
+ * for the player, or empty if the group is not on cooldown.
+ *
+ * @param group The group to get the cooldown for
+ * @return The cooldown remaining for this group in ticks, if not on cooldown
+ */
+ Optional cooldown(ResourceKey group);
/**
* Sets the cooldown for the specified {@link ItemType} for the
* specified amount of ticks.
*
- * @param type The item type to set the cooldown for
+ * @param stack The item type to set the cooldown for
* @param ticks The amount of ticks to set the item type on cooldown for
* @return False if setting the cooldown failed, possibly due to the event
* being cancelled
*/
- boolean setCooldown(ItemType type, Ticks ticks);
+ boolean setCooldown(ItemStack stack, Ticks ticks);
+
+ boolean setCooldown(ResourceKey group, Ticks ticks);
/**
* Resets the cooldown of the specified {@link ItemType} for the
* player.
*
- * @param type The item type to reset the cooldown for
+ * @param stack The item type to reset the cooldown for
* @return False if setting the cooldown failed, possibly due to the event
* being cancelled
*/
- boolean resetCooldown(ItemType type);
+ boolean resetCooldown(ItemStack stack);
+
+ boolean resetCooldown(ResourceKey group);
/**
* Gets the fraction of the specified {@link ItemType}'s cooldown that
@@ -82,9 +99,11 @@ public interface CooldownTracker {
*
* If present, this value will be between 0.0 and 1.0.
*
- * @param type The item type to get the cooldown fraction remaining
+ * @param stack The item type to get the cooldown fraction remaining
* @return The fraction of cooldown remaining for the specified item type
*/
- OptionalDouble fractionRemaining(ItemType type);
+ OptionalDouble fractionRemaining(ItemStack stack);
+
+ OptionalDouble fractionRemaining(ResourceKey group);
}
diff --git a/src/main/java/org/spongepowered/api/entity/vehicle/Raft.java b/src/main/java/org/spongepowered/api/entity/vehicle/Raft.java
new file mode 100644
index 0000000000..b5c77f49d8
--- /dev/null
+++ b/src/main/java/org/spongepowered/api/entity/vehicle/Raft.java
@@ -0,0 +1,32 @@
+/*
+ * This file is part of SpongeAPI, licensed under the MIT License (MIT).
+ *
+ * Copyright (c) SpongePowered
+ * Copyright (c) contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package org.spongepowered.api.entity.vehicle;
+
+/**
+ * Represents a Raft kind of boat.
+ */
+public interface Raft extends Boat {
+
+}
diff --git a/src/main/java/org/spongepowered/api/event/cause/entity/damage/DamageTypes.java b/src/main/java/org/spongepowered/api/event/cause/entity/damage/DamageTypes.java
index 1c47212b67..0f8ee6bd00 100644
--- a/src/main/java/org/spongepowered/api/event/cause/entity/damage/DamageTypes.java
+++ b/src/main/java/org/spongepowered/api/event/cause/entity/damage/DamageTypes.java
@@ -56,6 +56,8 @@ public final class DamageTypes {
public static final DefaultedRegistryReference DRY_OUT = DamageTypes.key(ResourceKey.minecraft("dry_out"));
+ public static final DefaultedRegistryReference ENDER_PEARL = DamageTypes.key(ResourceKey.minecraft("ender_pearl"));
+
public static final DefaultedRegistryReference EXPLOSION = DamageTypes.key(ResourceKey.minecraft("explosion"));
public static final DefaultedRegistryReference FALL = DamageTypes.key(ResourceKey.minecraft("fall"));
@@ -90,6 +92,8 @@ public final class DamageTypes {
public static final DefaultedRegistryReference LIGHTNING_BOLT = DamageTypes.key(ResourceKey.minecraft("lightning_bolt"));
+ public static final DefaultedRegistryReference MACE_SMASH = DamageTypes.key(ResourceKey.minecraft("mace_smash"));
+
public static final DefaultedRegistryReference MAGIC = DamageTypes.key(ResourceKey.minecraft("magic"));
public static final DefaultedRegistryReference MOB_ATTACK = DamageTypes.key(ResourceKey.minecraft("mob_attack"));
diff --git a/src/main/java/org/spongepowered/api/event/entity/living/player/CooldownEvent.java b/src/main/java/org/spongepowered/api/event/entity/living/player/CooldownEvent.java
index 65555c1227..2fdb6f8f99 100644
--- a/src/main/java/org/spongepowered/api/event/entity/living/player/CooldownEvent.java
+++ b/src/main/java/org/spongepowered/api/event/entity/living/player/CooldownEvent.java
@@ -24,6 +24,7 @@
*/
package org.spongepowered.api.event.entity.living.player;
+import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.entity.living.player.CooldownTracker;
import org.spongepowered.api.entity.living.player.server.ServerPlayer;
import org.spongepowered.api.event.Cancellable;
@@ -47,11 +48,11 @@ public interface CooldownEvent extends Event {
ServerPlayer player();
/**
- * Gets the associated item type whose cooldown is being set or removed.
+ * Gets the associated item group whose cooldown is being set or removed.
*
* @return The associated item type
*/
- ItemType itemType();
+ ResourceKey group();
/**
* Handles an {@link ItemType} being given a cooldown for a {@link ServerPlayer player}.
diff --git a/src/main/java/org/spongepowered/api/item/ItemTypes.java b/src/main/java/org/spongepowered/api/item/ItemTypes.java
index f3512467ea..3985b89dab 100644
--- a/src/main/java/org/spongepowered/api/item/ItemTypes.java
+++ b/src/main/java/org/spongepowered/api/item/ItemTypes.java
@@ -24,6 +24,7 @@
*/
package org.spongepowered.api.item;
+import org.jetbrains.annotations.ApiStatus;
import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.registry.DefaultedRegistryReference;
@@ -32,6 +33,7 @@
import org.spongepowered.api.registry.RegistryScope;
import org.spongepowered.api.registry.RegistryScopes;
import org.spongepowered.api.registry.RegistryTypes;
+import org.spongepowered.api.util.annotation.Experimental;
/**
*
@@ -240,6 +242,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference BLACK_BED = ItemTypes.key(ResourceKey.minecraft("black_bed"));
+ public static final DefaultedRegistryReference BLACK_BUNDLE = ItemTypes.key(ResourceKey.minecraft("black_bundle"));
+
public static final DefaultedRegistryReference BLACK_CANDLE = ItemTypes.key(ResourceKey.minecraft("black_candle"));
public static final DefaultedRegistryReference BLACK_CARPET = ItemTypes.key(ResourceKey.minecraft("black_carpet"));
@@ -276,6 +280,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference BLUE_BED = ItemTypes.key(ResourceKey.minecraft("blue_bed"));
+ public static final DefaultedRegistryReference BLUE_BUNDLE = ItemTypes.key(ResourceKey.minecraft("blue_bundle"));
+
public static final DefaultedRegistryReference BLUE_CANDLE = ItemTypes.key(ResourceKey.minecraft("blue_candle"));
public static final DefaultedRegistryReference BLUE_CARPET = ItemTypes.key(ResourceKey.minecraft("blue_carpet"));
@@ -316,6 +322,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference BOOKSHELF = ItemTypes.key(ResourceKey.minecraft("bookshelf"));
+ public static final DefaultedRegistryReference BORDURE_INDENTED_BANNER_PATTERN = ItemTypes.key(ResourceKey.minecraft("bordure_indented_banner_pattern"));
+
public static final DefaultedRegistryReference BOW = ItemTypes.key(ResourceKey.minecraft("bow"));
public static final DefaultedRegistryReference BOWL = ItemTypes.key(ResourceKey.minecraft("bowl"));
@@ -350,6 +358,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference BROWN_BED = ItemTypes.key(ResourceKey.minecraft("brown_bed"));
+ public static final DefaultedRegistryReference BROWN_BUNDLE = ItemTypes.key(ResourceKey.minecraft("brown_bundle"));
+
public static final DefaultedRegistryReference BROWN_CANDLE = ItemTypes.key(ResourceKey.minecraft("brown_candle"));
public static final DefaultedRegistryReference BROWN_CARPET = ItemTypes.key(ResourceKey.minecraft("brown_carpet"));
@@ -608,6 +618,14 @@ public final class ItemTypes {
public static final DefaultedRegistryReference CRAFTING_TABLE = ItemTypes.key(ResourceKey.minecraft("crafting_table"));
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference CREAKING_HEART = ItemTypes.key(ResourceKey.minecraft("creaking_heart"));
+
+ @Experimental("winter_drop")
+ @ApiStatus.Experimental
+ public static final DefaultedRegistryReference CREAKING_SPAWN_EGG = ItemTypes.key(ResourceKey.minecraft("creaking_spawn_egg"));
+
public static final DefaultedRegistryReference CREEPER_BANNER_PATTERN = ItemTypes.key(ResourceKey.minecraft("creeper_banner_pattern"));
public static final DefaultedRegistryReference CREEPER_HEAD = ItemTypes.key(ResourceKey.minecraft("creeper_head"));
@@ -668,6 +686,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference CYAN_BED = ItemTypes.key(ResourceKey.minecraft("cyan_bed"));
+ public static final DefaultedRegistryReference CYAN_BUNDLE = ItemTypes.key(ResourceKey.minecraft("cyan_bundle"));
+
public static final DefaultedRegistryReference CYAN_CANDLE = ItemTypes.key(ResourceKey.minecraft("cyan_candle"));
public static final DefaultedRegistryReference CYAN_CARPET = ItemTypes.key(ResourceKey.minecraft("cyan_carpet"));
@@ -956,6 +976,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference FERN = ItemTypes.key(ResourceKey.minecraft("fern"));
+ public static final DefaultedRegistryReference FIELD_MASONED_BANNER_PATTERN = ItemTypes.key(ResourceKey.minecraft("field_masoned_banner_pattern"));
+
public static final DefaultedRegistryReference FILLED_MAP = ItemTypes.key(ResourceKey.minecraft("filled_map"));
public static final DefaultedRegistryReference FIREWORK_ROCKET = ItemTypes.key(ResourceKey.minecraft("firework_rocket"));
@@ -1086,6 +1108,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference GRAY_BED = ItemTypes.key(ResourceKey.minecraft("gray_bed"));
+ public static final DefaultedRegistryReference GRAY_BUNDLE = ItemTypes.key(ResourceKey.minecraft("gray_bundle"));
+
public static final DefaultedRegistryReference GRAY_CANDLE = ItemTypes.key(ResourceKey.minecraft("gray_candle"));
public static final DefaultedRegistryReference GRAY_CARPET = ItemTypes.key(ResourceKey.minecraft("gray_carpet"));
@@ -1112,6 +1136,8 @@ public final class ItemTypes {
public static final DefaultedRegistryReference GREEN_BED = ItemTypes.key(ResourceKey.minecraft("green_bed"));
+ public static final DefaultedRegistryReference