2020-05-09 21:50:48 +02:00
|
|
|
package net.minestom.server.event.entity;
|
|
|
|
|
2021-06-02 07:09:15 +02:00
|
|
|
import net.minestom.server.entity.Entity;
|
2020-05-09 21:50:48 +02:00
|
|
|
import net.minestom.server.entity.ItemEntity;
|
2021-06-09 07:11:01 +02:00
|
|
|
import net.minestom.server.event.trait.CancellableEvent;
|
2021-10-06 20:40:17 +02:00
|
|
|
import net.minestom.server.event.trait.EntityInstanceEvent;
|
2020-06-02 14:54:33 +02:00
|
|
|
import net.minestom.server.item.ItemStack;
|
2020-10-24 16:33:13 +02:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
2020-05-09 21:50:48 +02:00
|
|
|
|
2020-06-01 17:11:43 +02:00
|
|
|
/**
|
2020-10-15 21:16:31 +02:00
|
|
|
* Called when two {@link ItemEntity} are merging their {@link ItemStack} together to form a sole entity.
|
2020-06-01 17:11:43 +02:00
|
|
|
*/
|
2021-10-06 20:40:17 +02:00
|
|
|
public class EntityItemMergeEvent implements EntityInstanceEvent, CancellableEvent {
|
2020-05-09 21:50:48 +02:00
|
|
|
|
2021-09-05 03:40:30 +02:00
|
|
|
private final Entity entity;
|
2020-10-22 12:55:53 +02:00
|
|
|
private final ItemEntity merged;
|
2020-06-02 14:54:33 +02:00
|
|
|
private ItemStack result;
|
|
|
|
|
2020-12-16 03:21:59 +01:00
|
|
|
private boolean cancelled;
|
|
|
|
|
2020-10-24 16:33:13 +02:00
|
|
|
public EntityItemMergeEvent(@NotNull ItemEntity source, @NotNull ItemEntity merged, @NotNull ItemStack result) {
|
2021-06-02 07:09:15 +02:00
|
|
|
this.entity = source;
|
2020-05-09 21:50:48 +02:00
|
|
|
this.merged = merged;
|
2020-06-02 14:55:18 +02:00
|
|
|
this.result = result;
|
2020-05-09 21:50:48 +02:00
|
|
|
}
|
|
|
|
|
2020-06-01 17:11:43 +02:00
|
|
|
/**
|
2020-10-15 21:16:31 +02:00
|
|
|
* Gets the {@link ItemEntity} who is receiving {@link #getMerged()}.
|
2020-06-01 17:11:43 +02:00
|
|
|
* <p>
|
2020-10-15 21:16:31 +02:00
|
|
|
* This can be used to get the final ItemEntity position.
|
2020-06-01 17:11:43 +02:00
|
|
|
*
|
|
|
|
* @return the source ItemEntity
|
|
|
|
*/
|
2020-12-16 03:21:59 +01:00
|
|
|
@Override
|
2021-09-05 03:40:30 +02:00
|
|
|
public @NotNull ItemEntity getEntity() {
|
2020-12-16 03:21:59 +01:00
|
|
|
return (ItemEntity) entity;
|
2020-05-09 21:50:48 +02:00
|
|
|
}
|
|
|
|
|
2020-06-01 17:11:43 +02:00
|
|
|
/**
|
2020-10-15 21:16:31 +02:00
|
|
|
* Gets the entity who will be merged.
|
2020-06-01 17:11:43 +02:00
|
|
|
* <p>
|
2020-10-15 21:16:31 +02:00
|
|
|
* This entity will be removed after the event.
|
2020-06-01 17:11:43 +02:00
|
|
|
*
|
|
|
|
* @return the merged ItemEntity
|
|
|
|
*/
|
2021-09-05 03:40:30 +02:00
|
|
|
public @NotNull ItemEntity getMerged() {
|
2020-05-09 21:50:48 +02:00
|
|
|
return merged;
|
|
|
|
}
|
2020-06-02 14:54:33 +02:00
|
|
|
|
|
|
|
/**
|
2020-10-15 21:16:31 +02:00
|
|
|
* Gets the final item stack on the ground.
|
2020-06-02 14:54:33 +02:00
|
|
|
*
|
|
|
|
* @return the item stack
|
|
|
|
*/
|
2021-09-05 03:40:30 +02:00
|
|
|
public @NotNull ItemStack getResult() {
|
2020-06-02 14:54:33 +02:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2020-10-15 21:16:31 +02:00
|
|
|
* Changes the item stack which will appear on the ground.
|
2020-06-02 14:54:33 +02:00
|
|
|
*
|
|
|
|
* @param result the new item stack
|
|
|
|
*/
|
2020-10-24 16:33:13 +02:00
|
|
|
public void setResult(@NotNull ItemStack result) {
|
2020-06-02 14:54:33 +02:00
|
|
|
this.result = result;
|
|
|
|
}
|
2020-12-16 03:21:59 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isCancelled() {
|
|
|
|
return cancelled;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void setCancelled(boolean cancel) {
|
|
|
|
this.cancelled = cancel;
|
|
|
|
}
|
2020-05-09 21:50:48 +02:00
|
|
|
}
|