コード例 #1
0
ファイル: mc_memory.py プロジェクト: gustavo515/craftassist
 def set_mob_position(self, mob) -> "MobNode":
     r = self._db_read_one("SELECT uuid FROM Mobs WHERE eid=?", mob.entityId)
     if r:
         self._db_write(
             "UPDATE Mobs SET x=?, y=?, z=? WHERE eid=?",
             mob.pos.x,
             mob.pos.y,
             mob.pos.z,
             mob.entityId,
         )
         (memid,) = r
     else:
         memid = MobNode.create(self, mob)
     return self.get_mob_by_id(memid)
コード例 #2
0
ファイル: mc_memory.py プロジェクト: banben/craftassist_mod
 def set_mob_position(self, mob) -> "MobNode":
     r = self._db_read_one("SELECT uuid FROM ReferenceObjects WHERE eid=?", mob.entityId)
     if r:
         self._db_write(
             "UPDATE ReferenceObjects SET x=?, y=?, z=?, yaw=?, pitch=? WHERE eid=?",
             mob.pos.x,
             mob.pos.y,
             mob.pos.z,
             mob.look.yaw,
             mob.look.pitch,
             mob.entityId,
         )
         (memid,) = r
     else:
         memid = MobNode.create(self, mob)
     return self.get_mem_by_id(memid)
コード例 #3
0
    def step(self, agent):
        super().step(agent)
        if self.finished:
            return

        # wait certain amount of ticks until issuing next step
        # while not (agent.memory.get_time() - self.last_stepped_time) > self.throttling_tick:
        #    pass

        if manhat_dist(agent.pos, self.pos) > self.PLACE_REACH:
            task = Move(agent, {
                "target": self.pos,
                "approx": self.PLACE_REACH
            })
            self.add_child_task(task, agent)
        else:
            agent.set_held_item(self.object_idm)
            if np.equal(self.pos, agent.pos).all():
                agent.step_neg_z()
            x, y, z = self.pos
            y = y + 1
            agent.place_block(x, y, z)
            time.sleep(0.1)
            mindist, placed_mob = self.find_nearby_new_mob(agent)
            if mindist < 3:
                memid = MobNode.create(agent.memory,
                                       placed_mob,
                                       agent_placed=True)
                mobmem = agent.memory.get_mem_by_id(memid)
                agent.memory.update_recent_entities(mems=[mobmem])
                if self.memid is not None:
                    agent.memory.add_triple(subj=self.memid,
                                            pred_text="task_effect_",
                                            obj=mobmem.memid)
                    # the chat_effect_ triple was already made when the task is added if there was a chat...
                    # but it points to the task memory.  link the chat to the mob memory:
                    chat_mem_triples = agent.memory.get_triples(
                        subj=None, pred_text="chat_effect_", obj=self.memid)
                    if len(chat_mem_triples) > 0:
                        chat_memid = chat_mem_triples[0][0]
                        agent.memory.add_triple(subj=chat_memid,
                                                pred_text="chat_effect_",
                                                obj=mobmem.memid)
            self.finished = True
コード例 #4
0
ファイル: mc_memory.py プロジェクト: gustavo515/craftassist
 def get_mob_by_eid(self, eid) -> Optional["MobNode"]:
     r = self._db_read_one("SELECT uuid FROM Mobs WHERE eid=?", eid)
     if r:
         return MobNode(self, r[0])
     else:
         return None
コード例 #5
0
ファイル: mc_memory.py プロジェクト: gustavo515/craftassist
 def get_mob_by_id(self, memid) -> "MobNode":
     return MobNode(self, memid)