Skip to content

Commit 0c3fb15

Browse files
authored
Merge pull request #258 from cjburkey01/minecart_fix
Try to fix minecarts being interactable
2 parents 6a3e7e0 + 9cddce5 commit 0c3fb15

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/main/java/com/cjburkey/claimchunk/config/ClaimChunkWorldProfileHandler.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ public void unloadAllProfiles() {
213213
// Assign entity defaults
214214
claimedChunks.entityAccesses.put(EntityType.UNKNOWN, new EntityAccess(false, false, false));
215215
claimedChunks.entityAccessClassMapping.put("MONSTERS", new EntityAccess(true, true, false));
216+
claimedChunks.entityAccessClassMapping.put("VEHICLES", new EntityAccess(true, false, false));
216217
unclaimedChunks.entityAccesses.put(EntityType.UNKNOWN, new EntityAccess(true, true, true));
217218

218219
// Assign block defaults
@@ -276,9 +277,20 @@ public void unloadAllProfiles() {
276277
entityType.getEntityClass()))
277278
.forEach(animals::add);
278279

280+
// Add mine-carts
281+
HashSet<EntityType> vehicles = new HashSet<>();
282+
Arrays.stream(EntityType.values())
283+
.filter(
284+
entityType ->
285+
entityType.getEntityClass() != null
286+
&& Minecart.class.isAssignableFrom(
287+
entityType.getEntityClass()))
288+
.forEach(vehicles::add);
289+
279290
entityAccessMapping.put("MONSTERS", monsters);
280291
entityAccessMapping.put("HANGING_ENTITIES", hangingEntities);
281292
entityAccessMapping.put("ANIMALS", animals);
293+
entityAccessMapping.put("VEHICLES", vehicles);
282294

283295
return entityAccessMapping;
284296
}

src/main/java/com/cjburkey/claimchunk/event/WorldProfileEventHandler.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.bukkit.event.hanging.HangingBreakEvent;
3131
import org.bukkit.event.hanging.HangingPlaceEvent;
3232
import org.bukkit.event.player.*;
33+
import org.bukkit.event.vehicle.VehicleEntityCollisionEvent;
3334
import org.jetbrains.annotations.NotNull;
3435
import org.jetbrains.annotations.Nullable;
3536

@@ -41,7 +42,7 @@ public record WorldProfileEventHandler(ClaimChunk claimChunk) implements Listene
4142

4243
// -- EVENTS -- //
4344

44-
/** Event handler for when a player right clicks on an entity. */
45+
/** Event handler for when a player right-clicks on an entity. */
4546
@EventHandler
4647
public void onEntityInteraction(PlayerInteractEntityEvent event) {
4748
if (event != null && !event.isCancelled()) {
@@ -87,6 +88,21 @@ public void onEntitySpawn(CreatureSpawnEvent event) {
8788
}
8889
}
8990

91+
@EventHandler
92+
public void onEntityPush(VehicleEntityCollisionEvent event) {
93+
if (event != null && !event.isCancelled() && !event.isCollisionCancelled()) {
94+
// If the entity pushing the cart is a player,
95+
if (event.getEntity() instanceof Player player) {
96+
// Then count this as an interaction event on this type
97+
onEntityEvent(
98+
() -> event.setCancelled(true),
99+
player,
100+
event.getVehicle(),
101+
EntityAccess.EntityAccessType.INTERACT);
102+
}
103+
}
104+
}
105+
90106
/** Event handler for when a player breaks a block. */
91107
@EventHandler
92108
public void onBlockBreak(BlockBreakEvent event) {

0 commit comments

Comments
 (0)