Merge branch 'master' into 1.15
This commit is contained in:
commit
671cad22bb
7 files changed
+52
-17
No files matched your search
@@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||||||
import org.spongepowered.asm.mixin.injection.Constant;
|
import org.spongepowered.asm.mixin.injection.Constant;
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||||
|
|
||||||
@Mixin(PistonHandler.class)
|
@Mixin(value = PistonHandler.class, priority = 69420) // piston push limit is important for carpet
|
||||||
public class PistonHandler_pushLimitMixin
|
public class PistonHandler_pushLimitMixin
|
||||||
{
|
{
|
||||||
@ModifyConstant(method = "tryMove", constant = @Constant(intValue = 12), expect = 3)
|
@ModifyConstant(method = "tryMove", constant = @Constant(intValue = 12), expect = 3)
|
||||||
|
|||||||
@@ -1236,7 +1236,8 @@ public class CarpetExpression
|
|||||||
* <div style="padding-left: 20px; border-radius: 5px 45px; border:1px solid grey;">
|
* <div style="padding-left: 20px; border-radius: 5px 45px; border:1px solid grey;">
|
||||||
* <h2>Manipulating inventories of blocks and entities</h2>
|
* <h2>Manipulating inventories of blocks and entities</h2>
|
||||||
* <p>Most functions in this category require inventory as the first argument. Inventory could be specified by
|
* <p>Most functions in this category require inventory as the first argument. Inventory could be specified by
|
||||||
* an entity, or a block, or position (three coordinates) of a potential block with inventory.
|
* an entity, or a block, or position (three coordinates) of a potential block with inventory. Player enderchest inventory
|
||||||
|
* require two arguments, keyword <code>'enderchest'</code>, followed by the player entity argument.
|
||||||
* If the entity or a block doesn't
|
* If the entity or a block doesn't
|
||||||
* have an inventory, they typically do nothing and return null.</p>
|
* have an inventory, they typically do nothing and return null.</p>
|
||||||
* <p>Most items returned are in the form of
|
* <p>Most items returned are in the form of
|
||||||
@@ -1264,6 +1265,7 @@ public class CarpetExpression
|
|||||||
* don't have an inventory</p>
|
* don't have an inventory</p>
|
||||||
* <pre>
|
* <pre>
|
||||||
* inventory_size(player()) => 41
|
* inventory_size(player()) => 41
|
||||||
|
* inventory_size('enderchest', player()) => 27 // enderchest
|
||||||
* inventory_size(x,y,z) => 27 // chest
|
* inventory_size(x,y,z) => 27 // chest
|
||||||
* inventory_size(block(pos)) => 5 // hopper
|
* inventory_size(block(pos)) => 5 // hopper
|
||||||
* </pre>
|
* </pre>
|
||||||
@@ -1587,7 +1589,7 @@ public class CarpetExpression
|
|||||||
}
|
}
|
||||||
private void syncPlayerInventory(NBTSerializableValue.InventoryLocator inventory, int int_1)
|
private void syncPlayerInventory(NBTSerializableValue.InventoryLocator inventory, int int_1)
|
||||||
{
|
{
|
||||||
if (inventory.owner instanceof ServerPlayerEntity)
|
if (inventory.owner instanceof ServerPlayerEntity && !inventory.isEnder)
|
||||||
{
|
{
|
||||||
ServerPlayerEntity player = (ServerPlayerEntity) inventory.owner;
|
ServerPlayerEntity player = (ServerPlayerEntity) inventory.owner;
|
||||||
player.networkHandler.sendPacket(new GuiSlotUpdateS2CPacket(
|
player.networkHandler.sendPacket(new GuiSlotUpdateS2CPacket(
|
||||||
|
|||||||
@@ -3338,11 +3338,11 @@ public class Expression
|
|||||||
}
|
}
|
||||||
catch (InternalExpressionException exc)
|
catch (InternalExpressionException exc)
|
||||||
{
|
{
|
||||||
throw new ExpressionException(c, this, "Your expression result is incorrect:"+exc.getMessage());
|
throw new ExpressionException(c, this, "Your expression result is incorrect: "+exc.getMessage());
|
||||||
}
|
}
|
||||||
catch (ArithmeticException exc)
|
catch (ArithmeticException exc)
|
||||||
{
|
{
|
||||||
throw new ExpressionException(c, this, "The final result is incorrect, "+exc.getMessage());
|
throw new ExpressionException(c, this, "The final result is incorrect: "+exc.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public abstract class ScriptHost
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
targetData.functionImports.put(identifier, sourceData);
|
targetData.futureImports.put(identifier, sourceData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,7 +168,7 @@ public abstract class ScriptHost
|
|||||||
|
|
||||||
private ModuleData findModuleDataFromFunctionImports(String name, ModuleData source, int ttl)
|
private ModuleData findModuleDataFromFunctionImports(String name, ModuleData source, int ttl)
|
||||||
{
|
{
|
||||||
if (ttl > 10) throw new InternalExpressionException("Cannot import "+name+", either your imports are too deep or too loopy");
|
if (ttl > 64) throw new InternalExpressionException("Cannot import "+name+", either your imports are too deep or too loopy");
|
||||||
if (source.globalFunctions.containsKey(name))
|
if (source.globalFunctions.containsKey(name))
|
||||||
return source;
|
return source;
|
||||||
if (source.functionImports.containsKey(name))
|
if (source.functionImports.containsKey(name))
|
||||||
@@ -202,7 +202,7 @@ public abstract class ScriptHost
|
|||||||
|
|
||||||
private ModuleData findModuleDataFromGlobalImports(String name, ModuleData source, int ttl)
|
private ModuleData findModuleDataFromGlobalImports(String name, ModuleData source, int ttl)
|
||||||
{
|
{
|
||||||
if (ttl > 10) throw new InternalExpressionException("Cannot import "+name+", either your imports are too deep or too loopy");
|
if (ttl > 64) throw new InternalExpressionException("Cannot import "+name+", either your imports are too deep or too loopy");
|
||||||
if (source.globalVariables.containsKey(name))
|
if (source.globalVariables.containsKey(name))
|
||||||
return source;
|
return source;
|
||||||
if (source.globalsImports.containsKey(name))
|
if (source.globalsImports.containsKey(name))
|
||||||
@@ -251,18 +251,18 @@ public abstract class ScriptHost
|
|||||||
|
|
||||||
public Stream<String> globaVariableNames(Module module, Predicate<String> predicate)
|
public Stream<String> globaVariableNames(Module module, Predicate<String> predicate)
|
||||||
{
|
{
|
||||||
return Stream.concat(
|
return Stream.concat(Stream.concat(
|
||||||
moduleData.get(module).globalVariables.keySet().stream(),
|
moduleData.get(module).globalVariables.keySet().stream(),
|
||||||
moduleData.get(module).globalsImports.keySet().stream()
|
moduleData.get(module).globalsImports.keySet().stream()
|
||||||
).filter(predicate);
|
), moduleData.get(module).futureImports.keySet().stream().filter(s -> s.startsWith("global_"))).filter(predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Stream<String> globaFunctionNames(Module module, Predicate<String> predicate)
|
public Stream<String> globaFunctionNames(Module module, Predicate<String> predicate)
|
||||||
{
|
{
|
||||||
return Stream.concat(
|
return Stream.concat(Stream.concat(
|
||||||
moduleData.get(module).globalFunctions.keySet().stream(),
|
moduleData.get(module).globalFunctions.keySet().stream(),
|
||||||
moduleData.get(module).functionImports.keySet().stream()
|
moduleData.get(module).functionImports.keySet().stream()
|
||||||
).filter(predicate);
|
),moduleData.get(module).futureImports.keySet().stream().filter(s -> !s.startsWith("global_"))).filter(predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ScriptHost retrieveForExecution(String /*Nullable*/ user)
|
public ScriptHost retrieveForExecution(String /*Nullable*/ user)
|
||||||
@@ -279,7 +279,7 @@ public abstract class ScriptHost
|
|||||||
// fixing imports
|
// fixing imports
|
||||||
userHost.moduleData.forEach((module, data) ->
|
userHost.moduleData.forEach((module, data) ->
|
||||||
{
|
{
|
||||||
data.setImportsBasedOn(this, this.moduleData.get(data.parent));
|
data.setImportsBasedOn(userHost, this.moduleData.get(data.parent));
|
||||||
});
|
});
|
||||||
userHosts.put(user, userHost);
|
userHosts.put(user, userHost);
|
||||||
return userHost;
|
return userHost;
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package carpet.script.value;
|
|||||||
|
|
||||||
import carpet.script.Context;
|
import carpet.script.Context;
|
||||||
import carpet.script.Expression;
|
import carpet.script.Expression;
|
||||||
import carpet.script.ExpressionInspector;
|
|
||||||
import carpet.script.Fluff;
|
import carpet.script.Fluff;
|
||||||
import carpet.script.LazyValue;
|
import carpet.script.LazyValue;
|
||||||
import carpet.script.Tokenizer;
|
import carpet.script.Tokenizer;
|
||||||
@@ -14,9 +13,11 @@ import carpet.script.exception.InternalExpressionException;
|
|||||||
import carpet.script.exception.ReturnStatement;
|
import carpet.script.exception.ReturnStatement;
|
||||||
import carpet.script.exception.ThrowStatement;
|
import carpet.script.exception.ThrowStatement;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class FunctionValue extends Value implements Fluff.ILazyFunction
|
public class FunctionValue extends Value implements Fluff.ILazyFunction
|
||||||
{
|
{
|
||||||
@@ -57,6 +58,16 @@ public class FunctionValue extends Value implements Fluff.ILazyFunction
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPrettyString()
|
||||||
|
{
|
||||||
|
List<String> stringArgs= new ArrayList<>(args);
|
||||||
|
if (outerState != null)
|
||||||
|
stringArgs.addAll(outerState.entrySet().stream().map(e ->
|
||||||
|
"outer("+e.getKey()+") = "+e.getValue().evalValue(null).getPrettyString()).collect(Collectors.toList()));
|
||||||
|
return (name.equals("_")?"<lambda>":name) +"("+String.join(", ",stringArgs)+")";
|
||||||
|
}
|
||||||
|
|
||||||
public String fullName() {return expression.module == null?name:name+"["+expression.module.getName()+"]";}
|
public String fullName() {return expression.module == null?name:name+"["+expression.module.getName()+"]";}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -107,6 +118,12 @@ public class FunctionValue extends Value implements Fluff.ILazyFunction
|
|||||||
throw new InternalExpressionException("Function value has no numeric value");
|
throw new InternalExpressionException("Function value has no numeric value");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTypeString()
|
||||||
|
{
|
||||||
|
return "function";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value slice(long from, long to)
|
public Value slice(long from, long to)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import net.minecraft.block.ChestBlock;
|
|||||||
import net.minecraft.block.InventoryProvider;
|
import net.minecraft.block.InventoryProvider;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
import net.minecraft.block.entity.BlockEntity;
|
||||||
import net.minecraft.block.entity.ChestBlockEntity;
|
import net.minecraft.block.entity.ChestBlockEntity;
|
||||||
import net.minecraft.block.entity.HopperBlockEntity;
|
|
||||||
import net.minecraft.command.arguments.ItemStackArgument;
|
import net.minecraft.command.arguments.ItemStackArgument;
|
||||||
import net.minecraft.command.arguments.ItemStringReader;
|
import net.minecraft.command.arguments.ItemStringReader;
|
||||||
import net.minecraft.command.arguments.NbtPathArgumentType;
|
import net.minecraft.command.arguments.NbtPathArgumentType;
|
||||||
@@ -32,7 +31,6 @@ import net.minecraft.server.world.ServerWorld;
|
|||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Box;
|
import net.minecraft.util.math.Box;
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -201,6 +199,17 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa
|
|||||||
return null;
|
return null;
|
||||||
return new InventoryLocator(pos, pos, inv, offset + 1);
|
return new InventoryLocator(pos, pos, inv, offset + 1);
|
||||||
}
|
}
|
||||||
|
else if (v1.getString().equalsIgnoreCase("enderchest"))
|
||||||
|
{
|
||||||
|
Value v2 = params.get(1 + offset).evalValue(c);
|
||||||
|
if (!(v2 instanceof EntityValue) || !(((EntityValue) v2).getEntity() instanceof PlayerEntity))
|
||||||
|
{
|
||||||
|
throw new InternalExpressionException("enderchest inventory requires player argument");
|
||||||
|
}
|
||||||
|
PlayerEntity e = (PlayerEntity)((EntityValue) v2).getEntity();
|
||||||
|
inv = e.getEnderChestInventory();
|
||||||
|
return new InventoryLocator(e, e.getBlockPos(), inv, offset + 2, true);
|
||||||
|
}
|
||||||
BlockPos pos = new BlockPos(
|
BlockPos pos = new BlockPos(
|
||||||
NumericValue.asNumber(v1).getDouble(),
|
NumericValue.asNumber(v1).getDouble(),
|
||||||
NumericValue.asNumber(params.get(1 + offset).evalValue(c)).getDouble(),
|
NumericValue.asNumber(params.get(1 + offset).evalValue(c)).getDouble(),
|
||||||
@@ -516,12 +525,19 @@ public class NBTSerializableValue extends Value implements ContainerValueInterfa
|
|||||||
public BlockPos position;
|
public BlockPos position;
|
||||||
public Inventory inventory;
|
public Inventory inventory;
|
||||||
public int offset;
|
public int offset;
|
||||||
|
public boolean isEnder;
|
||||||
InventoryLocator(Object owner, BlockPos pos, Inventory i, int o)
|
InventoryLocator(Object owner, BlockPos pos, Inventory i, int o)
|
||||||
|
{
|
||||||
|
this(owner, pos, i, o, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
InventoryLocator(Object owner, BlockPos pos, Inventory i, int o, boolean isEnder)
|
||||||
{
|
{
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
position = pos;
|
position = pos;
|
||||||
inventory = i;
|
inventory = i;
|
||||||
offset = o;
|
offset = o;
|
||||||
|
this.isEnder = isEnder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class NumericValue extends Value
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return String.format("%.3f..", getDouble());
|
return String.format("%.1f..", getDouble());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user