def get_cmd(self): if isinstance(self.target, BlockRef): target = self.target.as_cmdref() elif isinstance(self.target, EntitySelection): target = c.EntityReference(self.target.as_resolve()) else: assert False return c.DataModifyValue(target, c.NbtPath(self.path), self.action, self.source)
def apply(self, out, func): direct = self.var._direct_nbt() assert direct is not None, self.var dest_path, dest_storage = direct if isinstance(self.nbt, Variable): src_path, src_storage = self.nbt.as_nbt_variable(out)._direct_nbt() out.write(c.DataModifyFrom(dest_storage, dest_path, self.action, src_storage, src_path)) else: out.write(c.DataModifyValue(dest_storage, dest_path, self.action, self.nbt))
def set_const_val(self, value, out): out.write(c.DataModifyValue(self.storage, self.path, 'set', self.nbt_val(value)))
def get_cmd(self): direct = self.var._direct_nbt() assert direct is not None path, entity = direct return c.DataModifyValue(entity.ref, path, 'set', self.nbt)
def reset_last_exec(self): return c.DataModifyValue(self.block, c.NbtPath('UpdateLastExecution'), 'set', NBTByte(1))
def set_const_val(self, value, out): out.write( c.DataModifyValue(self.entity.ref, self.path, 'set', self.nbt_val(value)))
def modify_cmd(self, entity, path, nbt): return c.DataModifyValue(entity, path, 'append', nbt)