This repository has been archived by the owner on Feb 8, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Fix some bugs - Support to let entity sit
- Loading branch information
Showing
12 changed files
with
427 additions
and
100 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,4 +5,4 @@ | |
/dist/* | ||
/.gradle/* | ||
/*/build/* | ||
*.cmd | ||
*.cmd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
group "com.gmx.mattcha.roto" | ||
version "1.0.0" | ||
|
||
dependencies { | ||
compile project(":Sit") | ||
} |
87 changes: 87 additions & 0 deletions
87
Roto/src/main/java/com/gmx/mattcha/roto/EventListener.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
package com.gmx.mattcha.roto; | ||
|
||
import cn.nukkit.Player; | ||
import cn.nukkit.block.Block; | ||
import cn.nukkit.block.BlockID; | ||
import cn.nukkit.entity.Entity; | ||
import cn.nukkit.event.EventHandler; | ||
import cn.nukkit.event.Listener; | ||
import cn.nukkit.event.entity.EntityDespawnEvent; | ||
import cn.nukkit.event.player.PlayerInteractEntityEvent; | ||
import cn.nukkit.event.player.PlayerInteractEvent; | ||
import cn.nukkit.item.Item; | ||
import cn.nukkit.item.ItemID; | ||
import cn.nukkit.math.BlockFace; | ||
import cn.nukkit.utils.Faceable; | ||
import com.gmx.mattcha.sit.SitAPI; | ||
|
||
public class EventListener implements Listener { | ||
|
||
private MainClass plugin; | ||
|
||
public EventListener(MainClass plugin) { | ||
this.plugin = plugin; | ||
} | ||
|
||
public MainClass getPlugin() { | ||
return this.plugin; | ||
} | ||
|
||
@EventHandler | ||
public void onEntityTap(PlayerInteractEntityEvent event) { | ||
Entity entity = event.getEntity(); | ||
|
||
/*if (!this.plugin.npcList.containsKey(entity.getId())) { | ||
return; | ||
}*/ | ||
|
||
Item item = event.getItem(); | ||
if (item.getId() != ItemID.POTATO) { | ||
return; | ||
} | ||
|
||
if (SitAPI.getInstance().hasSat(entity)) { | ||
SitAPI.getInstance().standupEntity(entity); | ||
return; | ||
} | ||
|
||
SitAPI.getInstance().sitEntity(entity); | ||
} | ||
|
||
@EventHandler | ||
public void onDespawn(EntityDespawnEvent event) { | ||
Entity entity = event.getEntity(); | ||
|
||
if (!this.plugin.npcList.containsKey(entity.getId())) { | ||
return; | ||
} | ||
|
||
this.plugin.npcList.remove(entity.getId()); | ||
} | ||
|
||
@EventHandler | ||
public void onTap(PlayerInteractEvent event) { | ||
Player player = event.getPlayer(); | ||
if (!this.plugin.isBlockMode(player)) { | ||
return; | ||
} | ||
|
||
Block block = event.getBlock(); | ||
|
||
if (block.getId() == BlockID.AIR) { | ||
return; | ||
} | ||
|
||
String msg = "---------- Block Info(" + block.getX() + ", " + block.getY() + ", " + block.getZ() + ") ----------\n"; | ||
|
||
msg += "Block: " + block.getName() + "(ID=" + block.getId() + ", Damage=" + block.getDamage() + ", SaveID=" + block.getSaveId() + ")\n"; | ||
msg += "Chunk X=" + block.getChunkX() + ", Y=" + block.getChunkZ() + "\n"; | ||
|
||
if (block instanceof Faceable) { | ||
BlockFace face = ((Faceable) block).getBlockFace(); | ||
msg += "BlockFace: " + face.getName() + "(Index=" + face.getIndex() + ", Axis=" + face.getAxis() + ", HIndex=" + face.getHorizontalIndex() + ", HAngle=" + face.getHorizontalAngle() + ")\n"; | ||
} | ||
|
||
player.sendMessage(msg); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
package com.gmx.mattcha.roto; | ||
|
||
import cn.nukkit.Player; | ||
import cn.nukkit.Server; | ||
import cn.nukkit.command.Command; | ||
import cn.nukkit.command.CommandSender; | ||
import cn.nukkit.entity.Entity; | ||
import cn.nukkit.math.Vector3; | ||
import cn.nukkit.nbt.tag.CompoundTag; | ||
import cn.nukkit.plugin.PluginBase; | ||
import cn.nukkit.utils.TextFormat; | ||
import com.gmx.mattcha.roto.entity.EntityNPC; | ||
|
||
import java.util.*; | ||
|
||
public class MainClass extends PluginBase { | ||
|
||
private List<UUID> tempBlockMode = new ArrayList<>(); | ||
public Map<Long, EntityNPC> npcList = new HashMap<>(); | ||
|
||
@Override | ||
public void onEnable() { | ||
// Register a entity | ||
Entity.registerEntity("EntityNPC", EntityNPC.class, true); | ||
|
||
// Register event listener | ||
this.getServer().getPluginManager().registerEvents(new EventListener(this), this); | ||
|
||
Server.getInstance().getLogger().notice(TextFormat.YELLOW + "Enabled Roto! " + | ||
TextFormat.RED + "Don't use in production server!"); | ||
} | ||
|
||
// Commands | ||
|
||
@Override | ||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | ||
switch (command.getName()) { | ||
case "roto": | ||
if (args.length < 1) { | ||
return false; | ||
} | ||
|
||
if (!(sender instanceof Player)) { | ||
sender.sendMessage(TextFormat.RED + "Please run the command in game"); | ||
return true; | ||
} | ||
|
||
Player player = (Player) sender; | ||
|
||
switch (args[0]) { | ||
case "block": | ||
case "b": | ||
if (this.isBlockMode(player)) { | ||
this.removeBlockMode(player); | ||
sender.sendMessage("You are not block mode"); | ||
return true; | ||
} | ||
|
||
this.addBlockMode(player); | ||
sender.sendMessage("You are block mode"); | ||
break; | ||
default: | ||
sender.sendMessage( | ||
"----- Roto Commands -----\n" + | ||
"/roto <help> - This is not used now :P\n" + | ||
"/npc <make(m)|remove(r)|clone(c)> - Make a fake NPC\n" | ||
); | ||
} | ||
|
||
return true; | ||
case "npc": | ||
return this.execNPCCommand(sender, args); | ||
} | ||
|
||
return false; | ||
} | ||
|
||
private boolean execNPCCommand(CommandSender sender, String[] args) { | ||
if (args.length < 1) { | ||
return false; | ||
} | ||
|
||
if (!(sender instanceof Player)) { | ||
sender.sendMessage(TextFormat.RED + "Please run the command in game"); | ||
return true; | ||
} | ||
|
||
Player player = (Player) sender; | ||
|
||
switch (args[0]) { | ||
case "clone": | ||
case "c": | ||
this.clonePlayerNPC(player); | ||
return true; | ||
default: | ||
sender.sendMessage( | ||
"----- Roto Commands -----\n" + | ||
"/roto <help> - This is not used now :P\n" + | ||
"/npc <make(m)|remove(r)|clone(c)> - Make a fake NPC\n" | ||
); | ||
return true; | ||
} | ||
} | ||
|
||
// API - BlockMode | ||
|
||
public boolean isBlockMode(Player player) { | ||
return this.tempBlockMode.contains(player.getUniqueId()); | ||
} | ||
|
||
public boolean addBlockMode(Player player) { | ||
return this.tempBlockMode.add(player.getUniqueId()); | ||
} | ||
|
||
public boolean removeBlockMode(Player player) { | ||
return this.tempBlockMode.remove(player.getUniqueId()); | ||
} | ||
|
||
// API - NPC | ||
|
||
public void clonePlayerNPC(Player player) { | ||
CompoundTag nbt = Entity.getDefaultNBT(player, new Vector3(), (float) player.getYaw(), (float) player.getPitch()); | ||
|
||
EntityNPC enpc = (EntityNPC) Entity.createEntity("EntityNPC", player.chunk, nbt, player.getSkin()); | ||
|
||
enpc.spawnToAll(); | ||
|
||
this.npcList.put(enpc.getId(), enpc); | ||
} | ||
} |
26 changes: 26 additions & 0 deletions
26
Roto/src/main/java/com/gmx/mattcha/roto/entity/EntityNPC.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package com.gmx.mattcha.roto.entity; | ||
|
||
import cn.nukkit.entity.EntityHuman; | ||
import cn.nukkit.entity.data.Skin; | ||
import cn.nukkit.level.format.FullChunk; | ||
import cn.nukkit.nbt.tag.CompoundTag; | ||
|
||
public class EntityNPC extends EntityHuman { | ||
|
||
public EntityNPC(FullChunk chunk, CompoundTag nbt, Skin skin) { | ||
super(chunk, nbt); | ||
|
||
this.skin = skin; | ||
} | ||
|
||
@Override | ||
protected void initEntity() { | ||
this.skin = new Skin(); | ||
super.initEntity(); | ||
} | ||
|
||
@Override | ||
public int getNetworkId() { | ||
return -1; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
name: Roto | ||
version: 1.0.0 | ||
description: "a development tool" | ||
author: beito3 | ||
api: ["1.0.9"] | ||
main: com.gmx.mattcha.roto.MainClass | ||
load: STARTUP | ||
|
||
commands: | ||
roto: | ||
description: "roto main commands" | ||
usage: "/roto help" | ||
permission: roto.command.roto | ||
aliases: ["r"] | ||
npc: | ||
description: "make npc" | ||
usage: "/npc help" | ||
permission: roto.command.npc | ||
aliases: ["n"] | ||
|
||
permissions: | ||
roto: | ||
children: | ||
roto.command: | ||
children: | ||
roto.command.roto: | ||
default: true | ||
roto.command.npc: | ||
default: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
group "com.gmx.mattcha.sit" | ||
version "1.0.0" | ||
version "2.2.0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.