镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ public void onEnable() {
serverStateProvider = new PaperServerStateProvider();
containerProvider = new PaperContainerProvider();
} else {
serverStateProvider = new ReflServerStateProvider(getLogger());
serverStateProvider = new ReflServerStateProvider();
}

//Event Providers
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.earth2me.essentials;

import com.earth2me.essentials.utils.LocationUtil;
import com.earth2me.essentials.utils.MaterialUtil;
import net.ess3.api.IEssentials;
import org.bukkit.GameMode;
Expand All @@ -24,15 +23,9 @@ public EssentialsBlockListener(final IEssentials ess) {

@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onBlockPlace(final BlockPlaceEvent event) {
// Do not rely on getItemInHand();
// http://leaky.bukkit.org/issues/663
final ItemStack is = LocationUtil.convertBlockToItem(event.getBlockPlaced());
final ItemStack is = event.getItemInHand();

if (is == null) {
return;
}

if (is.getType() == MaterialUtil.SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == MaterialUtil.SPAWNER) {
if (is.getType() == MaterialUtil.SPAWNER && ess.getPersistentDataProvider().getString(is, "convert") != null) {
final BlockState blockState = event.getBlockPlaced().getState();
if (blockState instanceof CreatureSpawner) {
final CreatureSpawner spawner = (CreatureSpawner) blockState;
Expand All @@ -48,15 +41,10 @@ public void onBlockPlace(final BlockPlaceEvent event) {

final User user = ess.getUser(event.getPlayer());
if (user.hasUnlimited(is) && user.getBase().getGameMode() == GameMode.SURVIVAL) {
class UnlimitedItemSpawnTask implements Runnable {
@Override
public void run() {
user.getBase().getInventory().addItem(is);
user.getBase().updateInventory();
}
}

ess.scheduleSyncDelayedTask(new UnlimitedItemSpawnTask());
ess.scheduleSyncDelayedTask(() -> {
user.getBase().getInventory().addItem(is);
user.getBase().updateInventory();
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ public ItemStack get(String id, final boolean useResolvers) throws Exception {
final EntityType entity = data.getEntity();
if (entity != null && material.toString().contains("SPAWNER")) {
ess.getSpawnerItemProvider().setEntityType(stack, entity);
ess.getPersistentDataProvider().set(stack, "convert", "true");
}

return stack;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ public ItemStack get(final String id, final boolean useResolvers) throws Excepti
if (metaData == 0) metaData = EntityType.PIG.getTypeId();
try {
retval = ess.getSpawnerItemProvider().setEntityType(retval, EntityType.fromId(metaData));
ess.getPersistentDataProvider().set(retval, "convert", "true");
} catch (final IllegalArgumentException e) {
throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.logging.Logger;

public class ReflServerStateProvider implements ServerStateProvider {
private final Object nmsServer;
private final MethodHandle nmsIsRunning;

public ReflServerStateProvider(final Logger logger) {
public ReflServerStateProvider() {
Object serverObject = null;
MethodHandle isRunning = null;
final Class<?> nmsClass = ReflUtil.getNMSClass("MinecraftServer");
Expand Down