forked from SteamWar/SteamWar
Refactor to use better impl of interaction entity in REntity system
This commit is contained in:
@@ -144,14 +144,6 @@ public class Trace {
|
|||||||
} else {
|
} else {
|
||||||
entityServer = new REntityServer();
|
entityServer = new REntityServer();
|
||||||
entityServer.addPlayer(player);
|
entityServer.addPlayer(player);
|
||||||
entityServer.setCallback((p, rEntity, entityAction) -> {
|
|
||||||
if (entityAction != REntityAction.INTERACT) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (rEntity instanceof TraceEntity) {
|
|
||||||
((TraceEntity) rEntity).printIntoChat(p);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
entityServerMap.put(player, entityServer);
|
entityServerMap.put(player, entityServer);
|
||||||
}
|
}
|
||||||
render(getRecords(), entityServer, playerTraceShowData);
|
render(getRecords(), entityServer, playerTraceShowData);
|
||||||
@@ -168,14 +160,6 @@ public class Trace {
|
|||||||
REntityServer entityServer = entityServerMap.computeIfAbsent(player, k -> {
|
REntityServer entityServer = entityServerMap.computeIfAbsent(player, k -> {
|
||||||
REntityServer newEntityServer = new REntityServer();
|
REntityServer newEntityServer = new REntityServer();
|
||||||
newEntityServer.addPlayer(k);
|
newEntityServer.addPlayer(k);
|
||||||
newEntityServer.setCallback((p, rEntity, entityAction) -> {
|
|
||||||
if (entityAction != REntityAction.INTERACT) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (rEntity instanceof TraceEntity) {
|
|
||||||
((TraceEntity) rEntity).printIntoChat(p);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return newEntityServer;
|
return newEntityServer;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+11
-3
@@ -25,8 +25,9 @@ import de.steamwar.bausystem.features.tracer.TNTPoint;
|
|||||||
import de.steamwar.bausystem.features.tracer.Trace;
|
import de.steamwar.bausystem.features.tracer.Trace;
|
||||||
import de.steamwar.bausystem.features.tracer.TraceManager;
|
import de.steamwar.bausystem.features.tracer.TraceManager;
|
||||||
import de.steamwar.entity.RBlockDisplay;
|
import de.steamwar.entity.RBlockDisplay;
|
||||||
import de.steamwar.entity.RInteractionEntity;
|
import de.steamwar.entity.REntityAction;
|
||||||
import de.steamwar.entity.REntityServer;
|
import de.steamwar.entity.REntityServer;
|
||||||
|
import de.steamwar.entity.RInteraction;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.md_5.bungee.api.chat.ClickEvent;
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@@ -68,7 +69,7 @@ public class TraceEntity extends RBlockDisplay {
|
|||||||
private final String uniqueTntIdsString;
|
private final String uniqueTntIdsString;
|
||||||
|
|
||||||
private final Trace trace;
|
private final Trace trace;
|
||||||
private final RInteractionEntity hitbox;
|
private final RInteraction hitbox;
|
||||||
|
|
||||||
public TraceEntity(REntityServer server, Location location, boolean isExplosion, List<TNTPoint> records, Trace trace) {
|
public TraceEntity(REntityServer server, Location location, boolean isExplosion, List<TNTPoint> records, Trace trace) {
|
||||||
super(server, location);
|
super(server, location);
|
||||||
@@ -76,7 +77,14 @@ public class TraceEntity extends RBlockDisplay {
|
|||||||
this.records = records;
|
this.records = records;
|
||||||
this.trace = trace;
|
this.trace = trace;
|
||||||
uniqueTntIdsString = records.stream().map(TNTPoint::getTntId).distinct().map(Object::toString).collect(Collectors.joining(" "));
|
uniqueTntIdsString = records.stream().map(TNTPoint::getTntId).distinct().map(Object::toString).collect(Collectors.joining(" "));
|
||||||
hitbox = new RInteractionEntity(server, location, TNT_VISUAL_SCALE, TNT_VISUAL_SCALE, this);
|
hitbox = new RInteraction(server, location);
|
||||||
|
hitbox.setInteractionHeight(TNT_VISUAL_SCALE);
|
||||||
|
hitbox.setInteractionWidth(TNT_VISUAL_SCALE);
|
||||||
|
hitbox.setCallback((player, action) -> {
|
||||||
|
if (action == REntityAction.INTERACT) {
|
||||||
|
printIntoChat(player);
|
||||||
|
}
|
||||||
|
});
|
||||||
setTransform(TNT_VISUAL_TRANSFORM);
|
setTransform(TNT_VISUAL_TRANSFORM);
|
||||||
setBlock(material.createBlockData());
|
setBlock(material.createBlockData());
|
||||||
|
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is a part of the SteamWar software.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2025 SteamWar.de-Serverteam
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.steamwar.entity;
|
|
||||||
|
|
||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public class RInteractionEntity extends REntity {
|
|
||||||
|
|
||||||
private static final EntityDataAccessor<Float> widthWatcher = new EntityDataAccessor<>(8, EntityDataSerializers.FLOAT);
|
|
||||||
private static final EntityDataAccessor<Float> heightWatcher = new EntityDataAccessor<>(9, EntityDataSerializers.FLOAT);
|
|
||||||
|
|
||||||
private float width;
|
|
||||||
private float height;
|
|
||||||
private final REntity owner;
|
|
||||||
|
|
||||||
public RInteractionEntity(REntityServer server, Location location, float width, float height, REntity owner) {
|
|
||||||
super(server, EntityType.INTERACTION, location, 0);
|
|
||||||
this.width = width;
|
|
||||||
this.height = height;
|
|
||||||
this.owner = owner;
|
|
||||||
server.addEntity(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void postSpawn(Consumer<Object> packetSink) {
|
|
||||||
super.postSpawn(packetSink);
|
|
||||||
packetSink.accept(getDataWatcherPacket(widthWatcher, width, heightWatcher, height));
|
|
||||||
}
|
|
||||||
|
|
||||||
public REntity getOwner() {
|
|
||||||
return owner;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user