Added entity/player consumer for inheritance

This commit is contained in:
TheMode 2021-04-23 08:59:40 +02:00
parent 370f4c2f57
commit defdbea29b
6 changed files with 47 additions and 22 deletions

View File

@ -8,6 +8,7 @@ import net.minestom.server.entity.acquirable.Acquisition;
import net.minestom.server.monitoring.TickMonitor;
import net.minestom.server.network.ConnectionManager;
import net.minestom.server.network.player.NettyPlayerConnection;
import net.minestom.server.thread.PerChunkThreadProvider;
import net.minestom.server.thread.PerInstanceThreadProvider;
import net.minestom.server.thread.SingleThreadProvider;
import net.minestom.server.thread.ThreadProvider;
@ -42,7 +43,7 @@ public final class UpdateManager {
// DEFAULT THREAD PROVIDER
threadProvider = new PerInstanceThreadProvider();
//threadProvider = new PerChunkThreadProvider();
threadProvider = new SingleThreadProvider();
//threadProvider = new SingleThreadProvider();
}
/**

View File

@ -326,25 +326,12 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
}
//System.out.println(getAcquiredElement().getHandler().getBatchThread());
/*Collection<Acquirable<Player>> players = new ArrayList<>();
if (username.equals("TheMode911"))
for (Player p1 : MinecraftServer.getConnectionManager().getOnlinePlayers()) {
//if (username.equals("TheMode911"))
/*for (Player p1 : MinecraftServer.getConnectionManager().getOnlinePlayers()) {
//players.add(p1.getAcquiredElement());
p1.getAcquiredElement().acquire(o -> {
//System.out.println(getUsername()+": "+o+" "+getAliveTicks());
for (Player p2 : MinecraftServer.getConnectionManager().getOnlinePlayers())
p2.getAcquiredElement().acquire(o2 -> {
//System.out.println(getAcquiredElement().getHandler().getBatchThread().monitor.isOccupiedByCurrentThread());
});
p1.getAcquirable().acquire(o -> {
});
}
AcquirableCollection<Player> players1 = new AcquirableCollection<>(players);
players1.forEach(player -> {
players1.forEach(player2 -> {
});
});*/
}*/
super.update(time); // Super update (item pickup/fire management)

View File

@ -3,6 +3,7 @@ package net.minestom.server.entity.acquirable;
import net.minestom.server.entity.Entity;
import net.minestom.server.thread.BatchThread;
import net.minestom.server.thread.ThreadProvider;
import net.minestom.server.utils.consumer.EntityConsumer;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -58,7 +59,7 @@ public class AcquirableEntity {
*
* @param consumer the acquisition consumer
*/
public void acquire(@NotNull Consumer<@NotNull Entity> consumer) {
public void acquire(@NotNull EntityConsumer consumer) {
final Thread currentThread = Thread.currentThread();
final BatchThread elementThread = getHandler().getBatchThread();
Acquisition.acquire(currentThread, elementThread, () -> consumer.accept(unwrap()));
@ -72,7 +73,7 @@ public class AcquirableEntity {
* @return true if the acquisition happened without synchronization,
* false otherwise
*/
public boolean tryAcquire(@NotNull Consumer<@NotNull Entity> consumer) {
public boolean tryAcquire(@NotNull EntityConsumer consumer) {
final Thread currentThread = Thread.currentThread();
final BatchThread elementThread = getHandler().getBatchThread();
if (Objects.equals(currentThread, elementThread)) {
@ -104,8 +105,8 @@ public class AcquirableEntity {
*
* @param consumer the consumer of the acquired object
*/
public void scheduledAcquire(@NotNull Consumer<Entity> consumer) {
Acquisition.scheduledAcquireRequest(this, consumer);
public void scheduledAcquire(@NotNull EntityConsumer consumer) {
Acquisition.scheduledAcquireRequest(this, (Consumer<Entity>) consumer);
}
/**

View File

@ -0,0 +1,21 @@
package net.minestom.server.entity.acquirable;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.Player;
import net.minestom.server.utils.consumer.PlayerConsumer;
import org.jetbrains.annotations.NotNull;
public class AcquirablePlayer extends AcquirableEntity {
public AcquirablePlayer(@NotNull Entity entity) {
super(entity);
}
public void acquire(@NotNull PlayerConsumer consumer) {
super.acquire(consumer);
}
@Override
public @NotNull Player unwrap() {
return (Player) super.unwrap();
}
}

View File

@ -0,0 +1,8 @@
package net.minestom.server.utils.consumer;
import net.minestom.server.entity.Entity;
@FunctionalInterface
public interface EntityConsumer {
void accept(Entity entity);
}

View File

@ -0,0 +1,7 @@
package net.minestom.server.utils.consumer;
import net.minestom.server.entity.Player;
public interface PlayerConsumer extends EntityConsumer {
void accept(Player player);
}