Citadel is stealing my blocks! #35

Closed
problemindia opened this Issue May 14, 2012 · 15 comments

Comments

Projects
None yet
4 participants

I'm not very good at descriptions, so here's a video instead:

http://www.youtube.com/watch?v=bXPdc6E2yvA

In case that doesn't work, here's a text summary:

I start with 20 blocks of dirt (divided into two stacks). I use /ctf group on a stack of iron ingots, then begin placing the dirt from the rightmost stack. I only place 10 blocks worth of dirt, but 20 are used.

P.s. Exultant, you are awesome.

Collaborator

JonnyD commented Jul 11, 2012

Does this bug still exist?

Contributor

intangir commented Aug 10, 2012

still exists...

i just tried using ctf while placing stone, for each 1 stone, it was using 3 stone.. (1 placed, 1 to reforce.. 1 extra)

seemed to take from BOTH piles of stone on my bar when i placed 1 sand too, 1 sand, 2 stone..

Collaborator

ttk2 commented Aug 10, 2012

Did you try it on the test server or production server? The prod server is running an pretty old (but very stable) version.

Contributor

intangir commented Aug 10, 2012

i tried it on the version i got from github a few days ago

i just tried on test server and it works right though

is the version on github old also?

Contributor

intangir commented Aug 11, 2012

i just tested the latest version on github and it doesn't work right

when i used ctf, enforced wood with 2 stacks of stone, it took 1 stone, and 2 wood

when i tried fortifiying with stone, and placing stone, it took 3 stone

Collaborator

JonnyD commented Aug 11, 2012

Yeah, this hasn't been fixed. I haven't looked into this in depth yet but apparently the reason this happens is because we are using an api call that has been deprecated - "updateInventory". The problem is, they offer no alternative.

Contributor

intangir commented Aug 11, 2012

ok so you realize this is a slightly new issue than before

it uses two of the block your placing, not two of the block your using for enforcement

example, i use /ctf to place 8 blocks of obsidian with smoothstone enforcement

it uses 8 smoothstone, and 16 obsidian

when i break them i only get 8 back

Collaborator

JonnyD commented Aug 11, 2012

Thanks. Either way, it's still connected to Bukkits updateInventory() api call. It's deprecated but it's the only option and still "works". That's what I read from other developers on the Bukkit forum.

Collaborator

ttk2 commented Aug 11, 2012

Well, have you tried something different thanks to 1.3? With everything server side now inventory may be totally server side. Its just speculation but its worth checking out.

Collaborator

JonnyD commented Aug 11, 2012

I haven't tried anything. I am currently busy with other bugs. I don't know what you mean by everything server side? As far as I am aware bukkit's 1.3 api is no different than its 1.2.5 api.

Collaborator

ttk2 commented Aug 11, 2012

The API has remained the same but the underlying ways in which Minecraft works have been dramatically changed. Of course the point of an API is to provide a stable interface, meaning that despite the dramatic changes in how Minecraft functions the API calls look mostly the same and work mostly the same.

With the 1.3 update Minecraft moved all gameplay to server side stuff, meaning even singleplayer games are in fact run on a local server. Previously Multiplayer was preformed by running single player and having the client report in on what it had done, most of the actual game operated locally. Now this is reversed, instead of the client telling the server what it did the server tells the client what its actions have done. I was postulating that because of this inventory may be entirely server side now (removing the need to run the update inventory function) because there is no more 'client side inventory' that we need to update the inventory only exists server side now.

Collaborator

JonnyD commented Aug 11, 2012

Indeed, I get what you are saying but as far as I am aware that doesn't change much. updateInventory() was always a server side command. The problem is how they coded it. It is a bug which they have never gotten around to fixing.

Collaborator

JonnyD commented Aug 11, 2012

http://jd.bukkit.org/apidocs/org/bukkit/event/player/package-frame.html

"void updateInventory()
Deprecated.
This method should not be relied upon as it is a temporary work-around for a larger, more complicated issue."

Collaborator

ttk2 commented Aug 11, 2012

have you tried a build with it commented out, just to see how the new server/client system affects inventory modification?

Collaborator

JonnyD commented Aug 11, 2012

But there is no new server/client system. I don't know why you keep saying that. I do understand that mojang has changed single player to act like multiplayer but this still doesn't change anything. I don't know how to explain this. The effects of the command "updateInventory()" in 1.3 is still the same as in 1.2.5. It was always a server command. The problem is how they coded it, they coded it to remove items from all stacks and have never fixed it to allow removal of a single item.

Anyway, this conversation will be redundant since I found another way.

JonnyD added a commit that referenced this issue Aug 13, 2012

Merge pull request #50 from intangir/master
Fix: Issue #35 /ctf mode double placement cost

@JonnyD JonnyD closed this Aug 13, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment