Merge branch 'master' into 1.15

This commit is contained in:
gnembon committed 2020-01-10 21:50:20 -04:00
commit 1ea8815bd0
7 files changed
+79 -14

No files matched your search

+10
View File
@@ -356,6 +356,16 @@ public class CarpetSettings
)
public static int fillLimit = 32768;
@Rule(
desc = "Customizable forceload chunk limit",
options = {"256"},
category = CREATIVE,
strict = false,
validate = FillLimitLimits.class
)
public static int forceloadLimit = 256;
@Rule(
desc = "Customizable maximal entity collision limits, 0 for no limits",
options = {"0", "1", "20"},
@@ -57,7 +57,8 @@ public class PlayerCommand
.then(makeActionCommand("swapHands", EntityPlayerActionPack.ActionType.SWAP_HANDS))
.then(literal("kill").executes(PlayerCommand::kill))
.then(literal("shadow"). executes(PlayerCommand::shadow))
.then(literal("mount").executes(manipulation(EntityPlayerActionPack::mount)))
.then(literal("mount").executes(manipulation(ap -> ap.mount(true)))
.then(literal("anything").executes(manipulation(ap -> ap.mount(false)))))
.then(literal("dismount").executes(manipulation(EntityPlayerActionPack::dismount)))
.then(literal("sneak").executes(manipulation(ap -> ap.setSneaking(true))))
.then(literal("unsneak").executes(manipulation(ap -> ap.setSneaking(false))))
@@ -78,7 +79,7 @@ public class PlayerCommand
.then(literal("back").executes(c -> manipulate(c, ap -> ap.turn(180, 0))))
.then(argument("rotation", RotationArgumentType.rotation())
.executes(c -> manipulate(c, ap -> ap.turn(RotationArgumentType.getRotation(c, "rotation").toAbsoluteRotation(c.getSource())))))
).then(literal("move")
).then(literal("move").executes(c -> manipulate(c, EntityPlayerActionPack::stopMovement))
.then(literal("forward").executes(c -> manipulate(c, ap -> ap.setForward(1))))
.then(literal("backward").executes(c -> manipulate(c, ap -> ap.setForward(-1))))
.then(literal("left").executes(c -> manipulate(c, ap -> ap.setStrafing(1))))
@@ -244,7 +245,7 @@ public class PlayerCommand
{
if (cantManipulate(context)) return 0;
ServerPlayerEntity player = getPlayer(context);
((ServerPlayerEntityInterface) player).getActionPack().stop();
((ServerPlayerEntityInterface) player).getActionPack().stopAll();
return 1;
}
@@ -3,6 +3,9 @@ package carpet.helpers;
import carpet.fakes.ServerPlayerEntityInterface;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.passive.HorseBaseEntity;
import net.minecraft.entity.vehicle.BoatEntity;
import net.minecraft.entity.vehicle.MinecartEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.network.packet.PlayerActionC2SPacket;
@@ -41,7 +44,7 @@ public class EntityPlayerActionPack
public EntityPlayerActionPack(ServerPlayerEntity playerIn)
{
player = playerIn;
stop();
stopAll();
}
public void copyFrom(EntityPlayerActionPack other)
{
@@ -132,11 +135,8 @@ public class EntityPlayerActionPack
return turn(rotation.x, rotation.y);
}
public EntityPlayerActionPack stop()
public EntityPlayerActionPack stopMovement()
{
for (ActionType type : actions.keySet()) type.stop(player, actions.get(type));
actions.clear();
setSneaking(false);
setSprinting(false);
forward = 0.0F;
@@ -144,10 +144,27 @@ public class EntityPlayerActionPack
return this;
}
public EntityPlayerActionPack mount()
public EntityPlayerActionPack stopAll()
{
for (ActionType type : actions.keySet()) type.stop(player, actions.get(type));
actions.clear();
return stopMovement();
}
public EntityPlayerActionPack mount(boolean onlyRideables)
{
//test what happens
List<Entity> entities = player.world.getEntities(player,player.getBoundingBox().expand(3.0D, 1.0D, 3.0D));
List<Entity> entities;
if (onlyRideables)
{
entities = player.world.getEntities(player, player.getBoundingBox().expand(3.0D, 1.0D, 3.0D),
e -> e instanceof MinecartEntity || e instanceof BoatEntity || e instanceof HorseBaseEntity);
}
else
{
entities = player.world.getEntities(player, player.getBoundingBox().expand(3.0D, 1.0D, 3.0D));
}
if (entities.size()==0)
return this;
Entity closest = null;
@@ -164,7 +181,11 @@ public class EntityPlayerActionPack
closest = e;
}
}
if (closest != null) player.startRiding(closest,true);
if (closest == null) return this;
if (closest instanceof HorseBaseEntity && onlyRideables)
((HorseBaseEntity) closest).interactMob(player, Hand.MAIN_HAND);
else
player.startRiding(closest,true);
return this;
}
public EntityPlayerActionPack dismount()
@@ -0,0 +1,23 @@
package carpet.mixins;
import carpet.CarpetSettings;
import net.minecraft.server.command.ForceLoadCommand;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.ModifyConstant;
@Mixin(ForceLoadCommand.class)
public class ForceLoadCommand_forceLoadLimitMixin
{
@ModifyConstant(method = "executeChange", constant = @Constant(longValue = 256L))
private static long forceloadLimit(long original)
{
return CarpetSettings.forceloadLimit;
}
@ModifyConstant(method = "executeChange", constant = @Constant(intValue = 256))
private static int forceloadLimitError(int original)
{
return CarpetSettings.forceloadLimit;
}
}
@@ -1726,6 +1726,8 @@ public class CarpetExpression
* <p>Eye height of the entity.</p>
* <h3><code>query(e,'age')</code></h3>
* <p>Age, in ticks, of the entity, i.e. how long it existed.</p>
* <h3><code>query(e,'breeding_age')</code></h3>
* <p>Breeding age of passive entity, in ticks. If negative it it time to adulthood, if positive, breeding cooldown</p>
* <h3><code>query(e,'despawn_timer')</code></h3>
* <p>For living entities - the number of ticks they fall outside of immediate player presence.</p>
* <h3><code>query(e,'item')</code></h3>
@@ -1827,7 +1829,7 @@ public class CarpetExpression
* <p>Adds a vector to the motion vector. Most realistic way to apply a force to an entity.</p>
* <h3><code>modify(e, 'custom_name'), modify(e, 'custom_name', name )</code></h3>
* <h3><code>modify(e, 'pickup_delay')</code></h3>
* <p>Sets a custom pickup delay if the entity argument is an item entity</p>
* <h3><code>modify(e, 'breeding_age')</code></h3>
* <h3><code>modify(e, 'despawn_timer')</code></h3>
* <p>Sets a custom despawn timer value.</p>
* <h3><code>modify(e, 'dismount')</code></h3>
@@ -26,6 +26,7 @@ import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.mob.MobEntity;
import net.minecraft.entity.mob.MobEntityWithAi;
import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.predicate.entity.EntityPredicates;
@@ -245,6 +246,7 @@ public class EntityValue extends Value
put("width", (e, a) -> new NumericValue(e.getDimensions(EntityPose.STANDING).width));
put("eye_height", (e, a) -> new NumericValue(e.getStandingEyeHeight()));
put("age", (e, a) -> new NumericValue(e.age));
put("breeding_age", (e, a) -> e instanceof PassiveEntity?new NumericValue(((PassiveEntity) e).getBreedingAge()):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("count", (e, a) -> (e instanceof ItemEntity)?new NumericValue(((ItemEntity) e).getStack().getCount()):Value.NULL);
@@ -668,6 +670,13 @@ public class EntityValue extends Value
// ((MobEntity) e).setTarget(elb);
// }
//});
put("breeding_age", (e, v) ->
{
if (e instanceof PassiveEntity)
{
((PassiveEntity) e).setBreedingAge((int)NumericValue.asNumber(v).getLong());
}
});
put("talk", (e, v) -> {
// attacks indefinitely
if (e instanceof MobEntity)
@@ -777,8 +786,6 @@ public class EntityValue extends Value
if (lv.size() >= 2 && lv.size() <= 5)
{
String effectName = lv.get(0).getString();
if (effectName.startsWith("minecraft:"))
effectName = "minecraft:"+effectName;
StatusEffect effect = Registry.STATUS_EFFECT.get(new Identifier(effectName));
if (effect == null)
throw new InternalExpressionException("Wrong effect name: "+effectName);