Merge branch 'master' into 1.16

This commit is contained in:
gnembon committed 2020-04-22 01:46:31 -03:00
commit c0d8f1e5a1
7 files changed
+42 -12

No files matched your search

@@ -2,6 +2,6 @@ package carpet.fakes;
public interface ItemEntityInterface public interface ItemEntityInterface
{ {
int getAge(); int getAgeCM();
int getPickupDelay(); int getPickupDelayCM();
} }
@@ -4,5 +4,5 @@ import net.minecraft.server.world.ChunkTicketManager;
public interface ServerChunkManagerInterface public interface ServerChunkManagerInterface
{ {
ChunkTicketManager getTicketManager(); ChunkTicketManager getCMTicketManager();
} }
@@ -30,12 +30,12 @@ public abstract class ItemEntityMixin extends Entity implements ItemEntityInterf
} }
@Override @Override
public int getAge() { public int getAgeCM() {
return this.age; return this.age;
} }
@Override @Override
public int getPickupDelay() { public int getPickupDelayCM() {
return this.pickupDelay; return this.pickupDelay;
} }
@@ -91,8 +91,8 @@ public abstract class ItemEntityMixin extends Entity implements ItemEntityInterf
selfStack.increment(amount); selfStack.increment(amount);
self.setStack(selfStack); self.setStack(selfStack);
this.pickupDelay = Math.max(((ItemEntityInterface)other).getPickupDelay(), this.pickupDelay); this.pickupDelay = Math.max(((ItemEntityInterface)other).getPickupDelayCM(), this.pickupDelay);
this.age = Math.min(((ItemEntityInterface)other).getAge(), this.age); this.age = Math.min(((ItemEntityInterface)other).getAgeCM(), this.age);
otherStack.decrement(amount); otherStack.decrement(amount);
if (otherStack.isEmpty()) if (otherStack.isEmpty())
@@ -35,7 +35,7 @@ public abstract class ServerChunkManagerMixin implements ServerChunkManagerInter
@Shadow @Final private ChunkTicketManager ticketManager; @Shadow @Final private ChunkTicketManager ticketManager;
@Override // shared between scarpet and spawnChunks setting @Override // shared between scarpet and spawnChunks setting
public ChunkTicketManager getTicketManager() public ChunkTicketManager getCMTicketManager()
{ {
return ticketManager; return ticketManager;
} }
@@ -712,7 +712,7 @@ public class CarpetExpression
ServerWorld world = ((CarpetContext) c).s.getWorld(); ServerWorld world = ((CarpetContext) c).s.getWorld();
Long2ObjectOpenHashMap<SortedArraySet<ChunkTicket<?>>> levelTickets = ( Long2ObjectOpenHashMap<SortedArraySet<ChunkTicket<?>>> levelTickets = (
(ChunkTicketManagerInterface) ((ServerChunkManagerInterface) world.getChunkManager()) (ChunkTicketManagerInterface) ((ServerChunkManagerInterface) world.getChunkManager())
.getTicketManager() .getCMTicketManager()
).getTicketsByPosition(); ).getTicketsByPosition();
List<Value> res = new ArrayList<>(); List<Value> res = new ArrayList<>();
if (lv.size() == 0) if (lv.size() == 0)
@@ -254,7 +254,7 @@ public class EntityValue extends Value
put("despawn_timer", (e, a) -> e instanceof LivingEntity?new NumericValue(((LivingEntity) e).getDespawnCounter()):Value.NULL); put("despawn_timer", (e, a) -> e instanceof LivingEntity?new NumericValue(((LivingEntity) e).getDespawnCounter()):Value.NULL);
put("item", (e, a) -> (e instanceof ItemEntity)?ListValue.fromItemStack(((ItemEntity) e).getStack()):Value.NULL); put("item", (e, a) -> (e instanceof ItemEntity)?ListValue.fromItemStack(((ItemEntity) e).getStack()):Value.NULL);
put("count", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntity) e).getStack().getCount()):Value.NULL); put("count", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntity) e).getStack().getCount()):Value.NULL);
put("pickup_delay", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntityInterface) e).getPickupDelay()):Value.NULL); put("pickup_delay", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntityInterface) e).getPickupDelayCM()):Value.NULL);
// ItemEntity -> despawn timer via ssGetAge // ItemEntity -> despawn timer via ssGetAge
put("is_baby", (e, a) -> (e instanceof LivingEntity)?new NumericValue(((LivingEntity) e).isBaby()):Value.NULL); put("is_baby", (e, a) -> (e instanceof LivingEntity)?new NumericValue(((LivingEntity) e).isBaby()):Value.NULL);
put("target", (e, a) -> { put("target", (e, a) -> {
@@ -532,7 +532,37 @@ public class EntityValue extends Value
private static final Map<String, BiConsumer<Entity, Value>> featureModifiers = new HashMap<String, BiConsumer<Entity, Value>>() {{ private static final Map<String, BiConsumer<Entity, Value>> featureModifiers = new HashMap<String, BiConsumer<Entity, Value>>() {{
put("remove", (entity, value) -> entity.remove()); put("remove", (entity, value) -> entity.remove());
put("age", (e, v) -> e.age = Math.abs((int)NumericValue.asNumber(v).getLong()) ); put("age", (e, v) -> e.age = Math.abs((int)NumericValue.asNumber(v).getLong()) );
put("health", (e, v) -> { if (e instanceof LivingEntity) ((LivingEntity) e).setHealth((float) NumericValue.asNumber(v).getDouble()); }); put("health", (e, v) -> {
float health = (float) NumericValue.asNumber(v).getDouble();
if (health <= 0f && e instanceof ServerPlayerEntity)
{
ServerPlayerEntity player = (ServerPlayerEntity) e;
if (player.container != null)
{
// if player dies with open container, then that causes NPE on the client side
// its a client side bug that may never surface unless vanilla gets into scripting at some point
// bug: #228
player.closeContainer();
}
((LivingEntity) e).setHealth(health);
}
if (e instanceof LivingEntity) ((LivingEntity) e).setHealth(health);
});
// todo add handling of the source for extra effects
/*put("damage", (e, v) -> {
float dmgPoints;
DamageSource source;
if (v instanceof ListValue && ((ListValue) v).getItems().size() > 1)
{
List<Value> vals = ((ListValue) v).getItems();
dmgPoints = (float) NumericValue.asNumber(v).getDouble();
source = DamageSource ... yeah...
}
else
{
}
});*/
put("kill", (e, v) -> e.kill()); put("kill", (e, v) -> e.kill());
put("location", (e, v) -> put("location", (e, v) ->
{ {
+1 -1
View File
@@ -10,7 +10,7 @@ public class SpawnChunks
{ {
public static void changeSpawnChunks(ServerChunkManager chunkManager, ChunkPos pos, int size) public static void changeSpawnChunks(ServerChunkManager chunkManager, ChunkPos pos, int size)
{ {
ChunkTicketManager ticketManager = ((ServerChunkManagerInterface)chunkManager).getTicketManager(); ChunkTicketManager ticketManager = ((ServerChunkManagerInterface)chunkManager).getCMTicketManager();
((ChunkTicketManagerInterface)ticketManager).changeSpawnChunks(pos, size); ((ChunkTicketManagerInterface)ticketManager).changeSpawnChunks(pos, size);
} }
} }